Отображение всех переменных среды из запущенного сценария PowerShell


107

Мне нужно отображать все настроенные переменные среды в сценарии PowerShell во время выполнения. Обычно при отображении переменных среды я могу просто использовать в оболочке один из следующих методов (среди других методов, но они просты):

gci env:*
ls Env:

Однако у меня есть сценарий, вызываемый из другой программы, и когда я использую один из приведенных выше вызовов в сценарии, вместо того, чтобы представлять переменные среды и их значения, я вместо этого получаю список System.Collections.DictionaryEntryтипов вместо переменных и их значений. . Как я могу отобразить все переменные среды внутри сценария PowerShell?

Ответы:


159

Более короткая версия:

gci env:* | sort-object name

Это отобразит и имя, и значение.


1
Не могли бы вы объяснить, почему он так себя ведет и как ваша команда это исправляет?
Давид Ференци Рогожан

3
Это признак прогресса, потому что это envбыло слишком просто. Будь прокляты, M $ люди.
matcheek


14

Я наконец нашел решение, перебирая каждую запись в словаре:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String

у меня не работает в Linux. Вам не хватает gciдочерних предметов?
Туфир,

Я не пробовал это на ядре PowerShell, но в моем ответе есть gci. Обратите внимание, что этот вопрос касается [powershell], а не [powershell-core], поэтому решения могут не работать для последнего.
Бендер Величайший

8

Краткая версия с фильтром подстановки :

gci env: | where name -like 'Pro*'

0

Я не думаю, что какой-либо из представленных ответов имеет отношение к этому вопросу. OP получает список типов объектов (которые одинаковы для каждого члена), а не фактические имена и значения переменных. Это то, что вам нужно:

gci env:* | select Name,Value

Короче для:

Get-ChildItem Env:* | Select-Object -Property Name,Value
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.