在 PowerShell 的 Where-Object 中使用字符串数组进行比较
Use array of strings for comparing in Where-Object in PowerShell
我有一个以这种方式检索的 Active Directory 用户列表:
$users = Get-AdUser -Filter {(Enabled -eq "True" )} -Properties Description
问题是我有一组基于他们描述的特定用户:
- 管理员
- 秘书
- 邮递员[=38=]
我所做的是像这样创建子列表:
$Admins = $users | Where-Object Description -eq 'Administrator'
然而,问题是没有标准化。创建用户的人可以写 'Admin' 或 'Administrator' 或 'adm',... 这会导致我的子列表不包含所有管理员用户。
我所做的是创建了一个字符串数组:
$Admin_User_Strings = @("adm", "admin", "administrator")
我想在我的子列表中使用这个数组,但这显然不起作用:
$Admins = $users | Where-Object $Admin_User_Strings -contains Description
我收到错误:
Where-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'.
所以我的问题是,我怎样才能让下面一行:
$Admins = $users | Where-Object Description -eq 'Administrator'
接受更多的'Administrator'输入方式?
您有多种选择:
$users | Where-Object {$Admin_User_Strings -contains $_.Description}
或:$users | Where-Object $_.Description -in $Admin_User_Strings
或:$users | Where-Object $_.Description -match "adm|admin|administrator"
我有一个以这种方式检索的 Active Directory 用户列表:
$users = Get-AdUser -Filter {(Enabled -eq "True" )} -Properties Description
问题是我有一组基于他们描述的特定用户:
- 管理员
- 秘书
- 邮递员[=38=]
我所做的是像这样创建子列表:
$Admins = $users | Where-Object Description -eq 'Administrator'
然而,问题是没有标准化。创建用户的人可以写 'Admin' 或 'Administrator' 或 'adm',... 这会导致我的子列表不包含所有管理员用户。
我所做的是创建了一个字符串数组:
$Admin_User_Strings = @("adm", "admin", "administrator")
我想在我的子列表中使用这个数组,但这显然不起作用:
$Admins = $users | Where-Object $Admin_User_Strings -contains Description
我收到错误:
Where-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'.
所以我的问题是,我怎样才能让下面一行:
$Admins = $users | Where-Object Description -eq 'Administrator'
接受更多的'Administrator'输入方式?
您有多种选择:
$users | Where-Object {$Admin_User_Strings -contains $_.Description}
或:$users | Where-Object $_.Description -in $Admin_User_Strings
或:$users | Where-Object $_.Description -match "adm|admin|administrator"