2

我一直在尝试使用下面的代码来获取目标机器所在的 AD 组列表,但我遇到了一些困难。

Get-AdComputer -Identity $hostname -property "MemberOf" 

当我执行代码时,我会返回这个。

DistinguishedName : CN=$hostname,OU=test,OU=test,OU=test All Workstations,DC=te
                st,DC=test,DC=com
DNSHostName       : $hostname    Enabled           : True
MemberOf          : {CN=Flash_Player_Adobe_11.1.102_LCL,OU=test All Softw
                    are Groups,DC=test,DC=test,DC=test, CN=Adobe Acrobat X P
                    rofessional 10,OU=test All Software Groups,DC=test,DC=test,D
                    C=co.uk, CN=Silverlight_Microsoft_4.0.60.0_LCL,OU=test
                All Software Groups,DC=test,DC=test,DC=test}
Name              : %hostname    ObjectClass       : computer
ObjectGUID        : 5cf00026-c91a-422e-8a3e-7ee546456717f
SamAccountName    : Test
SID               : f-1-5-21-18934363546-5655752-5353453-564535
UserPrincipalName : 

有没有一种方法可以让 memberOf 返回(附加到机器的 AD agroup 列表并在仅列出组名称的列表中排序。例如:

Silverlight_Microsoft_4.0.60.0_LCL
Adobe Acrobat XP Professional

ETC

4

3 回答 3

2

您可以使用正则表达式来提取组名:

(Get-ADComputer -Identity $hostname -Property MemberOf).MemberOf -replace '^CN=([^,]+),OU=.+$','$1'
于 2012-04-23T21:18:48.873 回答
1

试试这个:

Get-AdComputer -Identity $hostname -property "MemberOf" | select -expand memberOf

评论后编辑:

试试这个我现在无法测试

Get-AdComputer -Identity $hostname -property "MemberOf" | select -expand memberOf | % { ($_.split(','))[0].replace('CN=','')}
于 2012-04-23T16:34:01.240 回答
1

奥林,

不要忘记您的朋友 dsquery 和 dsget 他们也可以很好地与 powershell 配合使用。

您执行 dsquery,然后使用 powershell 将其直接通过管道传输到 dsget -memberof 中,如果需要使用 foreach-object{$_trimstart(" ")} 进行修剪

玩它,让我们知道您使用什么。

直流

于 2012-04-23T17:33:55.140 回答