PowerShell:“MemberOf”输出一个空白列而不是用户的“组名”

问题描述

以下 PowerShell 脚本遍历 test.csv 文件中列出的组。 它从各个组中的每个用户提取 samAccountName 和 distinctName。但是,当我尝试提取 groupName 时,输出是“Microsoft.ActiveDirectory.Management.ADPropertyValueCollection”。不知道如何解决这个问题-

$groups = Get-Content test.csv
$domains = (Get-ADForest).Domains

foreach ($group in $groups)
{
    foreach ($domain in $domains)
    {
        if (Get-ADGroup $group -Server $domain)
        {
            Get-ADGroupMember $group -Server $domain | select groupName,samAccountName,distinguishedname | Export-Csv c:\temp\file.csv -notypeinformation -append
        }
    }
} 

我尝试了下面的方法,但它只是输出一个空列:

$groups = Get-Content test.csv
$domains = (Get-ADForest).Domains

foreach ($group in $groups)
{
    foreach ($domain in $domains)
    {
        if (Get-ADGroup $group -Server $domain)
        {
            Get-ADGroupMember $group -Server $domain | select samAccountName,distinguishedname | 
        Get-ADUser @{name  = ‘MemberOf’;’expression={$_.MemberOf -join “;”}} | 
        Export-Csv c:\temp\file.csv -notypeinformation
        }
    }
} 

解决方法

如果您将选择语句更改为:

select-object @{n='groupName';expression={$group}},samAccountName,distinguishedName

它应该为该列输出 Get-ADGroupMember 的 $group 输入。

,

试试这个,我为你的代码添加了一些优化:)

注意,这里或多或少需要 try {...} catch {...},因为如果对象是未找到。

Get-ADGroup