【发布时间】:2021-05-28 23:16:52
【问题描述】:
我这辈子都想不通。我要做的是获取用户所属的所有组的列表。然后我想把这些传递给我,并抓住我正在寻找的特定群体。
以下是我目前所拥有的:
(Get-ADUser $user -Properties MemberOf ).MemberOf | Where-Object {$_.Name -contains 'Part of Group Name'}
这不返回任何内容。我有一种感觉,我没有在我的 Where-Object 中引用正确的属性,但我很难找到那是什么。我知道(Get-ADUser $user -Properties MemberOf ).MemberOf的结果是:
CN=App - dyn_readuser_prod_WeblogicApps_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
CN=App - dyn_readuser_prod_osb_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
CN=App - dyn_readuser_prod_openshift_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
CN=App - dyn_readuser_nonprod_WeblogicApps_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
CN=App - dyn_readuser_nonprod_osb_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
CN=App - dyn_readuser_nonprod_openshift_NS,OU=Groups,OU=USCC,DC=int,DC=usc,DC=local
我只是不知道如何引用“CN”。
【问题讨论】:
-
一个常见的错误。
-containsoperator 用于检查是否可以在字符串数组中找到字符串。字符串自己的.Contains方法 用于检查是否可以在另一个字符串中找到子字符串(并且区分大小写)。在这种情况下,我建议使用-like运算符 ($_.Name -like '*PartOfGroupName*') 或使用正则表达式-match运算符 ($_.Name -match 'PartOfGroupName') -
@Theo 当我使用
-like时,它仍然没有返回任何内容。我在想$_.Name可能有问题 -
@Theo - 只是为了更加强调,我会将您的
.Contains更改为.Contains()。对我来说,这让“这是一种方法”更加清晰。 -
@Lee_Dailey 是的,但不幸的是,编辑评论为时已晚..
-
这里的事情是你明确地扩展了
.MemberOf属性,有效地删除了所有其他属性,如 .Name。 (你有一个字符串数组,仅此而已)所以在Where-Object子句中,你只需要使用$_ -like ..。
标签: powershell windows-scripting