Назад | Перейти на главную страницу

PowerShell: форматирование и сортировка переменных среды

Используя PowerShell, я могу получить все переменные среды (текущего процесса), отформатировать и отсортировать их:

gci env: | %{"{0}={1}" -f $_.Name,$_.Value} | sort

который дает:

a=foo
b=bar
c=baz

Но это дает все переменные процесса, а мне нужны только пользовательские переменные, поэтому я делаю:

[Environment]::GetEnvironmentVariables("User") | %{"{0}={1}" -f $_.Name,$_.Value} | sort

Но это выводит только это:

=

В [Environment]::GetEnvironmentVariables("User") работает, проблема после этого.

Проблема в том, что [Environment]::GetEnvironmentVariables("User") возвращает хеш-таблицу, а не набор объектов. Есть несколько способов получить желаемое. Вот один из них:

([Environment]::GetEnvironmentVariables("User")).GetEnumerator() | %{'{0} = {1}' -f $_.Key, $_.Value}