PowerShell: Env: evitare il troncamento delle variabili di ambiente


16

PowerShell visualizza le variabili di ambiente, una riga per ciascuna. Se una variabile ha un valore abbastanza lungo, viene troncata e aggiunta dei puntini di sospensione:

> gci env:

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

Esiste un modo per ottenere valori completi per tutti i var contemporaneamente, come in un prompt cmd standard? (le risposte fornite per Powershell get-childitem env: path restituisce una riga con puntini di sospensione, come avere qualcosa di utile? non si applica, quindi).


Ho impiegato un'ora a cercare modi per ottenere PowerShell per visualizzare il contenuto completo della variabile di ambiente del mio percorso. Lo tronca sempre a 2452 caratteri, con o senza segni di puntini di sospensione, anche se si specifica una formattazione più ampia. Ciò rende impossibile trattare la PS come qualcosa di tutt'altro che banalmente utile. La mia opinione su PS è che è un POS e nulla è cambiato. Ho letto centinaia di blog e risultati di ricerca e nessuno ha una soluzione. Neanche qui.
Suncat2000,

Risposte:


21

La formattazione di default viene troncata, specificare -Wrap e vedere l'output completo.

gci env: | Format-Table -Wrap -AutoSize

Risultato

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

o se si preferisce che l'output simuli esattamente cmd.exe, provare

cmd /c start /b set

Risultato

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

Questo è già molto buono. Qualche modo per ottenere lo stesso formato di un prompt cmd standard? Forse invocare cmd.exe dal prompt di PowerShell?
sancho.s Ripristina Monica il

Bene, questo è quello che stavo proponendo.
sancho.s Ripristina Monica il

4

Se si desidera emulare l' setoutput da PowerShell senza richiamare cmdprovare:

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

un sacco di digitazione, quindi avvolgilo in una funzione:

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

Entrambe le opzioni funzionano bene.
sancho.s Ripristina Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.