2011-03-31 121 views
15

由于PowerShell有很多像SQL查询一样的cmdlet,有没有一种快速的方法来检查对象是否在使用Where-Object cmdlet的其他对象列表中?检查对象是否在对象列表中

喜欢的东西在SQL:

SELECT column_name(s) 
FROM table_name 
WHERE column_name IN (value1,value2,...) 

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

回答

24

可以使用-contains操作:

Get-ColumnNames $table | Where-Object { value1,value2,... -contains $_ } 

这是倒退,但与价值观的左侧集合。

在PowerShell中3,您还可以使用-in操作:

Where-Object { $_ -in value1,value2,... } 

甚至

Where-Object -In value1,value2,... 

而且,PowerShell中如何与比较运算符一个怪癖,你可以将它们直接套用到收集在左侧:

Where-Object { value1,value2,... -eq $_ } 

-eq运营商如果它在列表中或者$null(强制为$false),将会产生相应的元素。

+0

它倒退,但它的作品。谢谢! – Mordechai 2013-08-22 06:31:36