Afficher toutes les variables d'environnement à partir d'un script PowerShell en cours d'exécution

104

Je dois afficher toutes les variables d'environnement configurées dans un script PowerShell au moment de l'exécution. Normalement, lors de l'affichage des variables d'environnement, je peux simplement utiliser l'un des éléments suivants au niveau du shell (parmi d'autres techniques, mais celles-ci sont simples):

gci env:*
ls Env:

Cependant, j'ai un script appelé à partir d'un autre programme, et lorsque j'utilise l'un des appels ci-dessus dans le script, au lieu d'être présenté avec des variables d'environnement et leurs valeurs, j'obtiens à la place une liste de System.Collections.DictionaryEntrytypes au lieu des variables et leurs valeurs . À l'intérieur d'un script PowerShell, comment puis-je afficher toutes les variables d'environnement?

Bender le plus grand
la source

Réponses:

156

Version plus courte:

gci env:* | sort-object name

Cela affichera à la fois le nom et la valeur.

Jaymjarri
la source
1
Pourriez-vous expliquer pourquoi il se comporte comme ça et comment votre commande le corrige, s'il vous plaît?
David Ferenczy Rogožan
3
C'est le signe du progrès car envc'était trop facile. Bon sang, les gens de M $.
matcheek le
36

Version la plus courte (avec des variables triées par nom):

gci env:
Vlad Rudenko
la source
14

J'ai finalement cherché une solution en parcourant chaque entrée du dictionnaire:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String
Bender le plus grand
la source
ne fonctionne pas sous Linux pour moi. Vous manquez gcipour obtenir les éléments enfants?
Thufir le
Je n'ai pas essayé cela sur PowerShell Core, mais gci est dans ma réponse. Notez que cette question est pour [powershell] et non [powershell-core], donc les solutions peuvent ne pas fonctionner pour ce dernier.
Bender the Greatest le
7

Version courte avec un filtre générique :

gci env: | where name -like 'Pro*'
Emil
la source