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?

Réponses:


156

Version plus courte:

gci env:* | sort-object name

Cela affichera à la fois le nom et la valeur.


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


14

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

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

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*'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.