get-aduser $username -Properties memberof | select -expand memberof
我正在获取用户所在群组的列表。 但我明白了:
CN=GroupName,OU=OU,OU=another OU,etc...
我希望它只是输出CN值 如果我必须在bash中这样做我会grep它,有没有办法在powershell中“grep”?或隔离CN所以它只会输出?
答案 0 :(得分:1)
很简单,只需在命令的Select
部分创建一个属性:
get-aduser $username -Properties memberof | Select -expand memberof | select @{n='GroupName';e={$_.split(',')[0].Substring(3)}} -expand GroupName
接受Memberof属性,将其拆分为逗号,获取该分割中的第一项,并获取跳过前3个字符的子字符串。然后,它将该值分配给GroupName
属性,并展开该属性。
或者,您可以使用RegEx匹配,并在ForEach
循环中返回匹配项。
get-aduser $username -Properties memberof | Select -Expand Memberof |Where{$_ -match "CN=(.*?),"} | ForEach{$Matches[1]}
或者使用第一个代码中使用的相同方法解析ForEach循环中的值。
get-aduser $username -Properties memberof | Select -expand memberof | ForEach {$_.split(',')[0].Substring(3)}