2011-03-31 15 views
15

Como PowerShell tiene muchos cmdlets similares a consultas SQL, ¿hay alguna forma rápida de verificar si el objeto está en la lista de otros objetos con el cmdlet Where-Object?Compruebe si el objeto está en una lista de objetos

Algo así como en SQL:

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

Por supuesto que se puede escribir una subrutina simple, pero me estaba preguntando si existe tal función.

Respuesta

24

Usted puede utilizar el operador de -contains:

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

Es al revés, aunque con la colección de valores en el lado izquierdo.

En PowerShell 3 también se puede utilizar el -in operador:

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

o incluso

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

Además, una peculiaridad de cómo PowerShell trabaja con operadores de comparación, se puede aplicar directamente a una recogida en el lado izquierdo:

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

elEl operadoraquí arrojará el elemento respectivo si está en la lista, o $null (que coacciona a $false).

+0

está al revés, pero funciona. ¡gracias! – Mordechai

Cuestiones relacionadas