早上好。我试图在我的工作中避免GUI来练习powershell,我的日常任务之一是检查用户是否被添加到正确的组中所以我使用了cmdlet:
get-aduser $username -Properties memberof | select -expand memberof
,我得到用户所在组的列表。但是我是这样理解的:
CN=GroupName,OU=OU,OU=another OU,etc...
,我希望它只输出CN值如果我必须在bash中这样做,我会grep它,在powershell中有什么方法可以"grep"吗?还是将CN隔离,只输出这个?
很简单,只需在命令的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)}