Mostrar todas las variables de entorno desde un script de PowerShell en ejecución

104

Necesito mostrar todas las variables de entorno configuradas en un script de PowerShell en tiempo de ejecución. Normalmente, al mostrar variables de entorno, puedo usar una de las siguientes en el shell (entre otras técnicas, pero estas son simples):

gci env:*
ls Env:

Sin embargo, tengo un script que se llama desde otro programa, y ​​cuando uso una de las llamadas anteriores en el script, en lugar de que se me presenten las variables de entorno y sus valores, obtengo una lista de System.Collections.DictionaryEntrytipos en lugar de las variables y sus valores. . Dentro de un script de PowerShell, ¿cómo puedo mostrar todas las variables de entorno?

Bender el más grande
fuente

Respuestas:

156

Versión más corta:

gci env:* | sort-object name

Esto mostrará tanto el nombre como el valor.

Jaymjarri
fuente
1
¿Podría explicar por qué se comporta así y cómo lo corrige su comando, por favor?
David Ferenczy Rogožan
3
Esa es la señal de progreso porque envfue demasiado fácil. Maldita sea la gente de M $.
matcheek
36

Versión más corta (con variables ordenadas por nombre):

gci env:
Vlad Rudenko
fuente
14

Finalmente busqué una solución al iterar sobre cada entrada en el diccionario:

(gci env:*).GetEnumerator() | Sort-Object Name | Out-String
Bender el más grande
fuente
no se ejecuta en Linux para mí. ¿Falta gcipara conseguir los artículos para niños?
Thufir
No he probado esto en el núcleo de PowerShell, pero gci está en mi respuesta. Tenga en cuenta que esta pregunta es para [powershell] y no [powershell-core], por lo que las soluciones pueden no funcionar para este último.
Bender the Greatest
7

Versión corta con filtro comodín :

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