передача объектов в строку выбора оказывается пустой

Почему это приходит пустым? Я ищу переменные, связанные с домашним каталогом. Должен ли я прибегать к findstr в этих случаях? Я понимаю, что я подключаюсь к объекту. Я хотел бы иметь возможность искать все свойства. -InputOjbect имеет тип PSObject.

dir variable: | select-string users

Ожидаемый результат:

$                              users
HOME                           C:\Users\js
PROFILE                        C:\Users\js\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
PWD                            C:\Users\js

РЕДАКТИРОВАТЬ:

Вот полустранный ответ, но я должен указать свойства, которые хочу.

dir variable: | select name,value | select-string users

@{Name=HOME; Value=C:\Users\js}
@{Name=PROFILE; Value=C:\Users\js\Documents\PowerShell\Microsoft.PowerShell_profile.ps1}
@{Name=PWD; Value=C:\Users\js}

person js2010    schedule 20.10.2019    source источник
comment
Боюсь, у вас неправильное представление о функции Select-String. Попробуйте Get-ChildItem Variable: | Where-Object {$_.Value -match 'users'}   -  person Olaf    schedule 20.10.2019
comment
Get-ChildItem не показывает $. Это делает: dir variable: | where {$_.Value -match "users"}   -  person sunilvijendra    schedule 20.10.2019
comment
@sunilvijendra Что ты имеешь в виду, говоря, что $ не отображается? Вы пробовали код? Кстати: dir — это просто псевдоним для Get-ChildItem... вы это знаете, верно? ;-)   -  person Olaf    schedule 21.10.2019
comment
Хороший вопрос, @Olaf, хотя иногда поиск на основе строк в выходных представлениях для отображения входных объектов является удобным ярлыком, который не требует знания структуры объектов - см. предложение по этой функции на GitHub.   -  person mklement0    schedule 21.10.2019
comment
$ — это последний аргумент команды. Это не так важно.   -  person js2010    schedule 21.10.2019
comment
Этот запрос функции GitHub требует, чтобы Select-String при нестроковом вводе применялось Out-String -Stream неявно:   -  person mklement0    schedule 14.12.2019


Ответы (1)


Если вы хотите, чтобы он работал как какая-то оболочка Linux, я бы использовал следующее:

    dir variable:  |Out-String -Stream  |Select-String "users"

Out-string преобразует объект в String. (-поток: построчно)

Итак, Select-string работает так, как задумано.

Или, если мы хотим получить в результате объекты, а не строку:

dir variable:  |where {$_.value -match "users" -or $_.name -match "users"}
person Gyula Kokas    schedule 20.10.2019
comment
Я думаю, что это плохое решение. Даже если он может дать желаемый результат, он превращает мощные объекты в глупые строки. - person Olaf; 20.10.2019
comment
Я думал, что все в порядке. - person js2010; 20.10.2019