6

В bash, если я сделаю следующее, я получу все переменные окружения с wd в них.

env | grep "wd"

Теперь, в Powershell, я знаю, что мог сделать

get-childitem env:wd*

Но я хочу направить канал к select-string как более общий подход, чтобы отфильтровать то, что поступает из его канала, независимо от того, что находится слева от канала. Так же, как grep.

Это ничего не фильтрует, я получаю все переменные окружения.

get-childitem env: | out-string | select-string -Pattern wd

И это мне ничего не дает

get-childitem env: | select-string -Pattern "wd"

Я знаю, что мог бы использовать следующее, и на самом деле было бы лучше, если бы я фильтровал только по имени переменной среды. Но что, если я хочу быстрый и грязный фильтр а-ля grep? И особенно, не зная об атрибутах того, что приходит из трубы.

get-childitem env: | where-object {$_.Name -like "wd*"}

то есть есть ли Powershelll, эквивалентный grep, применимый в контексте конвейера, а не только в контексте поиска файлов, который, похоже, хорошо подходит для select-string .

1 ответ1

6

По умолчанию Out-String создает одностроковый объект, который содержит все выходные данные, поэтому следующий фильтр выберет или отбросит весь вывод целиком. Необходимо использовать параметр -Stream командлета Out-String , чтобы создать отдельный строковый объект для каждой выходной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .