检查对象是否在对象列表中

npo*_*aka 24 powershell

由于PowerShell有许多类似SQL查询的cmdlet,是否有一种快速方法可以检查对象是否在Where-Objectcmdlet 的其他对象列表中?

像SQL中的东西:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
Run Code Online (Sandbox Code Playgroud)

当然我可以写一个简单的子程序,但我只是想知道是否有这样的功能.

Joe*_*oey 34

您可以使用-contains运营商:

Get-ColumnNames $table | Where-Object { value1,value2,... -contains $_ }
Run Code Online (Sandbox Code Playgroud)

虽然左侧有值集合,但它是向后的.

在PowerShell 3中,您还可以使用-in运算符:

Where-Object { $_ -in value1,value2,... }
Run Code Online (Sandbox Code Playgroud)

甚至

Where-Object -In value1,value2,...
Run Code Online (Sandbox Code Playgroud)

此外,有关PowerShell如何与比较运算符一起使用的怪癖,您可以将它们直接应用于左侧的集合:

Where-Object { value1,value2,... -eq $_ }
Run Code Online (Sandbox Code Playgroud)

-eq如果它在列表中,那么这里的运算符将产生相应的元素,或者$null(强制执行$false).