2011-05-27 111 views
1

这是我的问题。如何检查用户是否来自Powershell中特定OU的特定组中

我有多个表示物理位置的OU,因此它的结构如此。

COMPANY.COM \ LOC1 \用户(用户1,用户2,用户3等...) COMPANY.COM \ LOC2 \用户(USER4,USER5,user6等...)

每个位置都有一组用户应该是我的一部分,我需要审计以确保用户是该组的一部分。

OU LOC1,我需要确保OU LOC1中的所有用户(user1,user2,user3)都是安全组LOC1_GRP的一部分,并输出那些不是。

+0

你尝试过这么远吗?你想使用哪种库/ snapin? – 2011-05-27 21:35:29

回答

2

Get-QADUser?您可以过滤例如不属于特定组的所有此类用户:

get-qaduser -searchroot 'company.com/LOC1/Users' | ? {[string]$_.memberof -notmatch 'LOC1_GRP'} 
+1

我相信.memberof将成为一组DN,这使事情变得复杂。我认为{[string] $ _。memberof -notmatch'LOC1_GRP'}可以工作,而不必通过所有组DN检查比赛。 – mjolinor 2011-05-28 01:47:32

+0

@mjolinor:我认为你是真的。我已经纠正了答案。谢谢 – 2011-05-28 06:00:52

+0

@mjolinor:当然我们需要'不匹配',不确定它是一个数组。 – 2011-05-28 06:08:27

0

只是为了完成(正确)的第一个答案:

  1. 任务cmdlet来查询Active-Directory是因为使用PowerShell V1.0,但在PowerShell V2.0(W2K8 R2)中,微软自己实现(仅导入ActiveDirectory模块)
  2. 请注意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")} 
1

这应该这样做:

$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 
相关问题