PowerShell命令用于过滤具有多个值的记录

时间:2014-07-01 07:23:13

标签: powershell

我正在使用PowerShell命令。我想用一个字段名称描述过滤记录。我成功过滤了一个名为“school”的描述。 我的命令是:

Get-ADuser -filter {(Description -eq "school")} -Properties * | select *

但我想过滤具有多个描述值的记录,例如“school”,“college”等。这怎么可能?

3 个答案:

答案 0 :(得分:6)

您可以使用-or声明:

Get-ADuser -filter {(Description -eq "school") -or (Description -eq "college")} -Properties * | select *

或者您可以创建一个数组并过滤结果,尽管这是在查询执行后进行过滤,因此可能需要更长时间。在通过where-object之前尝试将过滤器应用于Get-AdUser是有意义的:

@filter = @("school", "college")
Get-ADuser -Properties * | where-object{@filter -contains $_.Description} | select *

答案 1 :(得分:2)

试试这个:

get-aduser -filter * -properties *|? {$_.description -like "school" -or $_.description -like "college"}

如果您要搜索包含学校的说明,请添加"*school*",然后在说明中查找学校的任何实例。

答案 2 :(得分:2)

大卫·马丁的方法有点静止。如果我们想要搜索不同数量的描述,我们需要执行以下操作:

$descriptions = "school", "college"
$filter = ($descriptions | % { "Description -eq '$_'" }) -join ' -or '
Get-ADuser -filter $filter -Properties Description