使用字符串数组在 PowerShell 中的 Where-Object 中进行比较 [英] Use array of strings for comparing in Where-Object in PowerShell

查看:46
本文介绍了使用字符串数组在 PowerShell 中的 Where-Object 中进行比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a user list of Active Directory that I retrieve this way:

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

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

The problem is that I have a specific set of users that is based in their description:

  • 管理员
  • 秘书
  • 邮递员

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

What I do is create sublists like this:

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

然而,问题是没有标准化.创建用户的人可以写Admin"或Administrator"或adm",...这会导致我的子列表不包含所有作为管理员的用户.

The problem however is, that there is no standardization. The person who creates an user can write 'Admin' or 'Administrator' or 'adm',... which causes my sublist not to contain all users that are an admin.

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

What I did is that I created an array of strings:

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

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

And I wanted to use this array in my sublist but this appearantly doesn't work:

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

我发现错误:

Where-Object : 无法找到接受参数System.Object[]"的位置参数.

Where-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'.

所以我的问题是,我怎样才能让以下行:

So my question is, how can I let the following line:

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

接受更多管理员"输入的方式?

accept more ways of 'Administrator' inputs?

推荐答案

您有几个选择:

<代码>$users |Where-Object {$Admin_User_Strings -contains $_.Description}

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

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

这篇关于使用字符串数组在 PowerShell 中的 Where-Object 中进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆