【发布时间】:2019-01-01 08:57:15
【问题描述】:
早安,
我编写了一个从 AD 收集计算机信息的脚本。 我正在收集的一个特定属性是 MemberOf。当我运行脚本时,它会输出计算机帐户所属组的完整路径。我只想要组名。请看下面:
get-qadcomputer -identity $computer | format-list -property Name, AccountIsDisabled, whenCreated, whenChanged, Description, AllMemberOf, ParentContainerDN
我的输出如下:
Name : SALESWS3381FPO
AccountIsDisabled : False
whenCreated : 3/7/2018 9:44:07 AM
whenChanged : 12/24/2018 4:18:04 AM
Description : BLDG 589 FLR 2 RM 567
AllMemberOf : {CN=SALES-ADOBEPRO-Win10_COMPUTERS,OU=Security Groups,OU=Groups,OU=Site Specific
OUs,OU=sales,DC=example,DC=com}
ParentContainerDN : OU=Bldg 589,OU=Desktops,OU=sales,DC=example,DC=com
所以,对于 AllMemberOf,我想说 AllMemberOf: SALES-ADOBEPRO-Win10_Computers
我们正在我们的机器上运行 Active Roles Client。
【问题讨论】:
-
Get-ADGroup的-Identity参数接受一个 DN,因此您可以使用它通过.Name属性查找正确的名称。 -
我们不能使用 Get-ADGroup。在我们的系统上,我们使用 Active Roles Console
-
啊!那么,如果您的 DN 非常一致,您可以使用这样的简单正则表达式 ...
$VarName.Split('=')[1].Split(',')[0]。与您的示例 DN 一起使用以提供SALES-ADOBEPRO-Win10_COMPUTERS。 -
感谢李先生的回复。我不熟悉正则表达式,无法弄清楚如何实施您的解决方案。
-
那不是正则表达式。 [grin] 您可以通过将
$VarName之后的内容应用于任何字符串来使用上面的代码。看起来您的.AllMemberOf属性是某种集合 - 可能是一个数组 - 只包含一个项目。所以您可以使用.AllmemberOf[0].Split('=')[1].Split(',')[0]来获取您展示的示例的 CN 部分。
标签: powershell active-directory