167 votos

¿Cómo imprimir las variables de entorno en la consola en PowerShell?

Estoy empezando a usar PowerShell y estoy tratando de averiguar cómo echo una variable de entorno del sistema a la consola para leerla.

Ninguno de los dos funciona. El primero sólo imprime %PATH% y la segunda no imprime nada.

echo %PATH%
echo $PATH

16 votos

echo $env:Path

0 votos

246voto

Mathias R. Jessen Puntos 1039

Prefiera el nombre de la variable con env :

$env:path

Por ejemplo, si quiere imprimir el valor del entorno "MINISHIFT_USERNAME", el comando será

$env:MINISHIFT_USERNAME

También puede enumerar todas las variables a través de la función env conducir:

Get-ChildItem env:

29 votos

Me gusta $Env:Path.Split(';') a mí mismo (salida de un directorio por línea).

2 votos

Por supuesto, o $env:Path -split ';'

2 votos

@AmirKatz La salida es la misma, porque las dos operaciones hacen exactamente lo mismo :) -split es un operador regex, String.Split() no es

8voto

user1147688 Puntos 391

Además de la respuesta de Mathias.

Aunque no se menciona en el OP, si también necesita ver el Powershell variables internas específicas/relacionadas, es necesario utilizar Get-Variable :

$ Get-Variable

Name                           Value
----                           -----
$                              name
?                              True
^                              gci
args                           {}
ChocolateyTabSettings          @{AllCommands=False}
ConfirmPreference              High
DebugPreference                SilentlyContinue
EnabledExperimentalFeatures    {}
Error                          {System.Management.Automation.ParseException: At line:1 char:1...
ErrorActionPreference          Continue
ErrorView                      NormalView
ExecutionContext               System.Management.Automation.EngineIntrinsics
false                          False
FormatEnumerationLimit         4
...

Estos también incluyen cosas que puede haber establecido en su perfil de inicio script.

6voto

zachbugay Puntos 547

Yo también me encontré con esto. Quería ver las rutas pero tener cada una en una línea separada. Esto imprime la ruta, y la divide por el punto y coma.

$env:path.Split(";")

5voto

armanexplorer Puntos 61

Como complemento a otras respuestas,

En el caso de listar todas las Variables de Entorno, para concisar los comandos, puede utilizar dir , ls y gci (acrónimo de Get-ChildItem), ya que son tres alias de Get-ChildItem .

Así pues, todos los comandos siguientes son iguales y pueden utilizarse en este contexto:

Get-ChildItem Env:

o

dir Env:

o

ls Env:

o

gci Env:

Más información en shellgeek .


También, como un caso de uso práctico, puede obtener una lista ordenada alfabéticamente de Variables de Entorno basada en Name ou Value así:

Get-ChildItem Env: | Sort Name

o

Get-ChildItem Env: | Sort Value

PARA SU INFORMACIÓN : No se puede sustituir Get-ChildItem Env: con Get-Item Env: en los comandos anteriores (la lista no se ordenará y permanecerá sin cambios). Por lo tanto, en estos casos, el comando Get-ChildItem puede ser preferible al Get-Item mencionado en esta respuesta de BitBite .

Por último, puede ordenar el valor de un registro específico de Variables de entorno de la siguiente manera:

(Get-ChildItem Env:PATH).Value.Split(';') | Sort

3voto

BitBite Puntos 31

Lo siguiente es lo que mejor funciona en mi opinión:

Get-Item Env:PATH
  1. Es más corto y por lo tanto un poco más fácil de recordar que Get-ChildItem . No hay jerarquía con las variables de entorno.
  2. El comando es simétrico a una de las formas que se utiliza para establecer variables de entorno con Powershell . (EX: Set-Item -Path env:SomeVariable -Value "Some Value" )
  3. Si se acostumbra a hacerlo así, recordará cómo enumerar todas las variables de entorno; simplemente omita la parte de la entrada. (EJ: Get-Item Env: )

La sintaxis me pareció extraña al principio, pero las cosas empezaron a tener más sentido cuando entendí la noción de Proveedores . Esencialmente, PowerShell le permite navegar por componentes dispares del sistema de forma análoga a un sistema de archivos.

¿Qué sentido tienen los dos puntos finales en Env: ? Intenta hacer una lista de todas las "unidades" disponibles a través de Proveedores como esta:

PS> Get-PSDrive

Sólo veo algunos resultados... ( Alias, C, Cert, D, Env, Function, HKCU, HKLM, Variable, WSMan ). Es evidente que Env es simplemente otra "unidad" y los dos puntos son una sintaxis familiar para cualquiera que haya trabajado en Windows.

Puedes navegar por las unidades y elegir valores específicos:

Get-ChildItem C:\Windows
Get-Item C:
Get-Item Env:
Get-Item HKLM:
Get-ChildItem HKLM:SYSTEM

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X