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

107

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

gci env:*
ls Env:

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

Бендер Величайший
источник

Ответы:

159

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

gci env:* | sort-object name

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

Jaymjarri
источник
1
Не могли бы вы объяснить, почему он так себя ведет и как ваша команда это исправляет?
Давид Ференци Рогожан
3
Это признак прогресса, потому что это envбыло слишком просто. Будь прокляты, M $ люди.
matcheek
37

Самая короткая версия (с сортировкой переменных по имени):

gci env:
Влад Руденко
источник
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
Mauricio_BR
источник