Powershell 帮助 - 将 Active Directory MemberOf 添加到现有脚本

Powershell 帮助 - 将 Active Directory MemberOf 添加到现有脚本

下面的工作 PowerShell 脚本为我提供了特定 AD 组的所有用户。它还列出了他们的职称和部门。我想添加另一列,列出他们所属的所有其他 AD 组。我添加了一个示例,前 3 列来自工作脚本,最后一列黄色是我想要看到的。我很感谢你的帮助,我的 PowerShell 专业知识有限。

$identity = 'TestGroup'
$Server = 'Test.Local'
Get-ADGroupMember –identity $identity -Server $Server -Recursive | 
Get-ADUser –Server $Server -Property Name, Title, Department | Select Name, Title, Department |
Get-ADPrincipalGroupMembership | select name, groupscope | Export-CSV –path C:\Temp\Test15.csv –NoTypeInformation

最终结果示例

答案1

不要通过管道Get-ADPrincipalGroupMembershipcalculated propertycmdlet 放在expression对象的部分内。

值被创建为数组,因此foreach-object与 PowerShell$( )运算符一起使用将“组名”和“范围”转换为冒号分隔的值(即<group name>:<group scope>)。

此外,join所有用分号(“”)分隔的值对都与分号(“ ;”)连接起来,将所有组名和组范围对象对连接到一个 csv 字段中。

因为这是 csv 数据,您可能不应该用逗号分隔任何连接的分组对值,否则导入过程可能会解释错误。

字段输出示例

groupa:global;groupb;domainlocal;groupc:domainlocal

Csv 输出示例

"Name","Title","Department","MemberOfPrimaryGroups"
"Administrator",,,"GroupA:DomainLocal;GroupB:DomainLocal;KoolAdmins:Global"
"John Doe","Systems Administrator","IT"," GroupA:DomainLocal;GroupB:DomainLocal;KoolAdmins:Global"
"Curly Moe","IT Manager","IT","GroupA:DomainLocal;GroupB:DomainLocal;KoolAdmins:Global"

电源外壳

$identity = 'TestGroup'
$Server = 'Test.Local'

Get-ADGroupMember -Identity $identity -Server $Server -Recursive  | 
    Get-ADUser –Server $Server -Property Name, Title, Department | 
        Select-Object Name, Title, Department, @{
            N="MemberOfPrimaryGroups";
            E={(Get-ADPrincipalGroupMembership $identity | ForEach-Object {
                "$($_.Name):$($_.GroupScope)" }) -join ";"}} | 
                    Export-CSV –path C:\Temp\Test15.csv –NoTypeInformation;

支持资源

相关内容