powershell提取部分输出

时间:2018-12-31 17:48:34

标签: powershell active-directory

美好的一天,

我有一个编写的脚本,该脚本从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。

1 个答案:

答案 0 :(得分:0)

您可以使用简单的正则表达式从完整的字符串中获取组的值。

通过在格式列表中使用计算所得的属性,您可以仅提取并保留组名。

@{n='AllMemberOf ';e={$_.AllMemberOf -replace "(CN=)(.*?),.*",'$2'}}

这是应用该计算出的属性的修改后的代码示例:

get-qadcomputer -identity $computer | format-list -property Name, AccountIsDisabled, whenCreated, whenChanged, Description, @{n='AllMemberOf ';e={$_.AllMemberOf -replace "(CN=)(.*?),.*",'$2'}}, ParentContainerDN

参考文献:

4sysops - Add a calculated property with Select-Object in Powershell

StackOverflow — How can I use Regex to pull just the CN from a Distinguished Name with PowerShell