Powershell - 查询OU中的非标准组成员?

Powershell - 查询OU中的非标准组成员?

我正在寻求创建一个脚本,它只显示 OU 中属于“非标准”组的用户。

例如,“会计”OU 中的所有用户都将是至少一个名称中带有“会计”的组的成员。示例:“XYZ-Accounting-Global”。这是我们的标准组命名。那些只有“会计”组成员资格的用户可以被跳过。

我希望仅针对 OU 中属于该 OU 的任何非标准组的成员的用户。

  • 示例:用户位于“会计”OU 中,并且是“XYZ-Accounting-Global”的成员,但也是“XYZ-Payroll-Global”的成员。

到目前为止,我已经想到了这一点:

$domain = "DC=company,DC=com"

$dept = read-host "What is the DEPT. name?"

Get-ADuser -SearchBase "OU=$dept,OU=Users,OU=company,$domain" -Filter * -properties memberof | Where-Object {!($_.memberof -like "*$dept*")}

但这个方法不太好用。它似乎返回了那些不属于该名称的组的用户$dept。不幸的是,我不知道如何解决这个问题。

任何帮助我都感激不尽。谢谢。

答案1

它似乎返回那些不属于 $dept 名称的组成员的用户

这肯定是因为!您在过滤器中使用了Where-Object,这意味着not

尝试删除感叹号:

Where-Object {($_.memberof -like "*$dept*")}

编辑

关于您的评论,您可以尝试:

Where-Object {($_.memberof -notlike "*$dept*")}

相关内容