Проверьте, находится ли объект в списке объектов

Как PowerShell имеет много командлетов, подобных SQL-запросу, есть ли быстрый способ проверить, находится ли объект в списке других объектов с помощью командлета Where-Object?

Что-то вроде SQL:

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

Конечно, я могу написать простую подпрограмму, но мне просто интересно, есть ли такая возможность.

Ответы

Ответ 1

Вы можете использовать оператор -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).