2017-04-14 44 views
-2

比較的字符串數組我有Active Directory中的用戶列表,我找回這種方式:使用位置對象在PowerShell中

$users = Get-AdUser -Filter {(Enabled -eq "True")} -Properties Description 

的問題是,我有一個基於一組特定的用戶在他們的描述:

  • 管理員
  • 祕書
  • 郵件男人

我要做的就是創建子列表如下:然而這

$Admins = $users | Where-Object Description -eq 'Administrator' 

的問題,沒有標準化。創建用戶的人可以編寫'Admin'或'Administrator'或'adm',...這會導致我的子列表不包含所有屬於管理員的用戶。

我做什麼,我創建一個字符串數組:

$Admin_User_Strings = @("adm", "admin", "administrator") 

而且我想在我的子表使用這個數組,但這個appearantly不起作用:

$Admins = $users | Where-Object $Admin_User_Strings -contains Description 

我得到errror:

Where-Object:無法找到接受參數'System.Object []'的位置參數。

所以我的問題是,我怎麼才能讓下面一行:

$Admins = $users | Where-Object Description -eq 'Administrator' 

接受的「管理員」投入更多的方式?

+1

'位置對象{$ Admin_User_Strings -contains $ _說明}'或'凡 - 對象描述-in $ Admin_User_Strings' –

+1

或'Where-Object描述-like adm *' –

+0

你的第二個答案不適用於空格 –

回答

1

您有幾種選擇:

$users | Where-Object {$Admin_User_Strings -contains $_.Description}

或:$users | Where-Object $_.Description -in $Admin_User_Strings

或:$users | Where-Object $_.Description -match "adm|admin|administrator"

+0

謝謝,'-match'選項會幫助我很多。感謝Mosh –