使用字符串数组在PowerShell中的Where-Object中进行比较

时间:2017-04-14 08:45:17

标签: powershell where-clause

我有一个以这种方式检索的Active Directory用户列表:

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

问题是我有一组基于其描述的特定用户:

  • 管理员
  • 邮件人

我所做的是创建这样的子列表:

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

问题是,没有标准化。创建用户的人可以写“管理员”。或者'管理员'或者' adm',...这导致我的子列表不包含作为管理员的所有用户。

我所做的是创建了一个字符串数组:

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

我想在我的子列表中使用这个数组,但这显然不起作用:

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

我得到了错误:

  

Where-Object:找不到接受参数' System.Object []'的位置参数。

所以我的问题是,我怎么能让以下一行:

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

接受更多管理员'输入

1 个答案:

答案 0 :(得分:2)

您有几种选择:

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

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

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