Powershell - 获取和组织Active Directory组计算机

时间:2012-04-23 16:22:48

标签: powershell active-directory

我一直在尝试使用下面的代码来获取目标计算机所在的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群组列表,并在列表中排序,只列出了组名。例如:

Silverlight_Microsoft_4.0.60.0_LCL
Adobe Acrobat XP Professional

3 个答案:

答案 0 :(得分:2)

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

(Get-ADComputer -Identity $hostname -Property MemberOf).MemberOf -replace '^CN=([^,]+),OU=.+$','$1'

答案 1 :(得分:1)

试试这个:

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

评论后编辑:

试试这个我现在无法测试

Get-AdComputer -Identity $hostname -property "MemberOf" | select -expand memberOf | % { ($_.split(','))[0].replace('CN=','')}

答案 2 :(得分:1)

奥林,

不要忘记你的朋友dsquery和dsget,他们也和powershell一起工作。

你做一个dsquery,然后使用powershell将它直接导入dsget -memberof,如果需要使用foreach-object修剪{$ _ trimstart(“”)}

玩它并让我们知道你使用的是什么。

直流