PowerShell: Env: evite el truncamiento de las variables de entorno

16

PowerShell muestra variables de entorno, una línea para cada una. Si una variable tiene un valor lo suficientemente largo, se trunca y se agrega una elipsis:

> gci env:

Name                           Value
----                           -----
<suppressed lines>
PSModulePath                   C:\Windows\system32\WindowsPowerSh...
<suppressed lines>

¿Hay alguna forma de obtener valores completos para todos los vars a la vez, como en un indicador de cmd estándar? (las respuestas dadas para Powershell get-childitem env: path devuelve una línea elipsada, ¿cómo tener algo útil? entonces no se aplicaría).

sancho.s Restablece a Monica
fuente
Pasé una hora buscando formas de hacer que PowerShell muestre el contenido completo de mi variable de entorno de ruta. Siempre lo trunca a 2452 caracteres, con o sin marcas de puntos suspensivos, incluso si especifico un formato más amplio. Esto hace que sea imposible tratar la EP como otra cosa que no sea trivialmente útil. Mi opinión sobre PS es que es un POS y nada ha cambiado eso. He leído cientos de blogs y resultados de búsqueda y nadie tiene una solución. Ni siquiera aquí.
Suncat2000

Respuestas:

21

El formato predeterminado se trunca, especifique -Wrap y vea la salida completa.

gci env: | Format-Table -Wrap -AutoSize

Resultado

PSModulePath            C:\Users\KNUCKLE-DRAGGER\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

o si prefiere que la salida simule exactamente cmd.exe, intente

cmd /c start /b set

Resultado

PSModulePath=C:\Users\KNUCKLE-DRAGGER\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
Knuckle-Dragger
fuente
Esto ya es muy bueno. ¿Alguna forma de obtener el mismo formato que un indicador de cmd estándar? ¿Quizás invocando cmd.exe desde el indicador de PowerShell?
sancho.s Restablece a Mónica el
Bien, eso es lo que estaba proponiendo.
sancho.s Restablece a Mónica el
4

Si desea emular la setsalida de powershell sin invocar, cmdintente:

dir env: | %{"{0}={1}" -f $_.Name,$_.Value}

mucho tipeo, así que envuélvelo en una función:

function set {dir env: | %{"{0}={1}" -f $_.Name,$_.Value}}
zdan
fuente
Ambas opciones funcionan bien.
sancho.s Restablece a Mónica el