我需要提取一个特定OU中属于同一组的所有成员的列表。问题是只有使用-match时才有效,但是它也会选择名称相似的组。如果使用-eq,它什么也不会检索到,尽管用户是该特定组的成员。有人能帮助我找出我做错了什么吗?
我一直在使用的powershell脚本;
Get-ADUser -Filter * -SearchBase 'OU=NewUsers,DC=LOCAL' -properties memberof | Where-Object {$_.memberof -eq 'APP-KMD'} | Select SamAccountName
4条答案
按热度按时间dldeef671#
您的问题与比较运算符有关,以下是它们之间的一些差异:
编号比较:
字符串比较:
正则表达式比较
如果您知道组的确切名称,您可能应该使用-如“GROUPNAME”,这样您只会得到该组的用户。
h9a6wy2h2#
显然,您不能直接匹配,但是如果您获取给定组中的匹配项,然后抽出该组中的成员并进行比较,就会得到预期的输出。
wfveoks03#
记住
memberOf
属性的值是一个集团的DN,所以需要匹配整个DN,而不是只匹配集团的CN,可以在子查询中得到集团的DN,直接在过滤器中使用,即:06odsfpq4#
老职位,我知道,但只是想把我的帽子扔到别人的戒指。
也许我漏掉了一些东西,但是将
Get-ADGroupMember -Identity "APP-KMD"
通过管道传输到Get-ADUser
不是更简单吗?不完全确定这是性能最好的代码,但它至少限制了您通过管道发送的内容仅限于该组的成员,而不是首先通过整个SearchBase发送
Get-ADUser
的所有成员。编辑:忽略,它的waaay更高的性能使用-LDAP过滤器,因为其他人指出-以下为我工作。
或更好的可维护性