Wyświetl wszystkie zmienne środowiskowe z uruchomionego skryptu programu PowerShell

104

Muszę wyświetlić wszystkie skonfigurowane zmienne środowiskowe w skrypcie programu PowerShell w czasie wykonywania. Zwykle podczas wyświetlania zmiennych środowiskowych mogę po prostu użyć jednej z następujących technik w powłoce (między innymi, ale są to proste):

gci env:*
ls Env:

Jednak mam skrypt wywoływany z innego programu, a kiedy używam jednego z powyższych wywołań w skrypcie, zamiast przedstawiania zmiennych środowiskowych i ich wartości, zamiast tego otrzymuję listę System.Collections.DictionaryEntrytypów zamiast zmiennych i ich wartości . Jak mogę wyświetlić wszystkie zmienne środowiskowe wewnątrz skryptu programu PowerShell?

Bender the Greatest
źródło

Odpowiedzi:

156

Krótsza wersja:

gci env:* | sort-object name

Spowoduje to wyświetlenie zarówno nazwy, jak i wartości.

jaymjarri
źródło
1
Czy mógłbyś wyjaśnić, dlaczego tak się zachowuje i jak twoje polecenie to naprawia?
David Ferenczy Rogožan
3
To znak postępu, ponieważ envbyło to zbyt łatwe. Cholera, ludzie M $.
matcheek
36

Najkrótsza wersja (ze zmiennymi posortowanymi według nazwy):

gci env:
Vlad Rudenko
źródło
14

W końcu znalazłem rozwiązanie, przeglądając każdy wpis w słowniku:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String
Bender the Greatest
źródło
nie działa na Linuksie dla mnie. Brakuje Ci gciprzedmiotów podrzędnych?
Thufir
Nie próbowałem tego na PowerShell Core, ale gci jest w mojej odpowiedzi. Zwróć uwagę, że to pytanie dotyczy [powershell], a nie [powershell-core], więc rozwiązania mogą nie działać w przypadku tego drugiego.
Bender the Greatest
7

Krótka wersja z filtrem dzikiej karty :

gci env: | where name -like 'Pro*'
Emil
źródło