如何检查用户是否来自Powershell中特定OU的特定组中
这是我的问题。如何检查用户是否来自Powershell中特定OU的特定组中
我有多个表示物理位置的OU,因此它的结构如此。
COMPANY.COM \ LOC1 \用户(用户1,用户2,用户3等...) COMPANY.COM \ LOC2 \用户(USER4,USER5,user6等...)
每个位置都有一组用户应该是我的一部分,我需要审计以确保用户是该组的一部分。
OU LOC1,我需要确保OU LOC1中的所有用户(user1,user2,user3)都是安全组LOC1_GRP的一部分,并输出那些不是。
Get-QADUser?您可以过滤例如不属于特定组的所有此类用户:
get-qaduser -searchroot 'company.com/LOC1/Users' | ? {[string]$_.memberof -notmatch 'LOC1_GRP'}
我相信.memberof将成为一组DN,这使事情变得复杂。我认为{[string] $ _。memberof -notmatch'LOC1_GRP'}可以工作,而不必通过所有组DN检查比赛。 – mjolinor 2011-05-28 01:47:32
@mjolinor:我认为你是真的。我已经纠正了答案。谢谢 – 2011-05-28 06:00:52
@mjolinor:当然我们需要'不匹配',不确定它是一个数组。 – 2011-05-28 06:08:27
只是为了完成(正确)的第一个答案:
- 任务cmdlet来查询Active-Directory是因为使用PowerShell V1.0,但在PowerShell V2.0(W2K8 R2)中,微软自己实现(仅导入ActiveDirectory模块)
- 请注意Active-Directory中的
memberOf
属性,因为即使用户创建了用户,它也只是空的是域用户组的成员(它是primaryGrouID中的代码)所以这就是我改变测试的原因。
PS C:\> get-adobject -SearchBase "ou=loc1,dc=company,dc=com" -filter {objectclass -eq "user"} -properties memberof | where {!($_.memberof -match "mygroup")}
这应该这样做:
$groupname = "cn=group-blarr,ou=loc1,dc=company,dc=com"
Get-ADUser -filter {memberof -ne $groupname} -ResultPageSize 0 -SearchBase "ou=loc1,dc=company,dc=com" -Searchscope 2
你尝试过这么远吗?你想使用哪种库/ snapin? – 2011-05-27 21:35:29