2011-05-27 103 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 
相關問題