PowerShell: Env: Unikaj obcięcia zmiennych środowiskowych


16

PowerShell wyświetla zmienne środowiskowe, po jednej linii dla każdej. Jeśli zmienna ma wystarczająco długą wartość, jest obcinana i dołączana jest wielokropek:

> gci env:

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

Czy istnieje sposób na uzyskanie pełnych wartości dla wszystkich zmiennych jednocześnie, tak jak w standardowym poleceniu cmd? (odpowiedzi podane dla Powershell get-childitem env: ścieżka zwraca elipsowaną jedną linię, jak mieć coś przydatnego? wtedy nie miałyby zastosowania).


Spędziłem godzinę na poszukiwaniu sposobów, aby PowerShell wyświetlał całą zawartość zmiennej środowiskowej mojej ścieżki. Zawsze obcina go do 2452 znaków, ze znakami wielokropka lub bez, nawet jeśli określę szersze formatowanie. Uniemożliwia to traktowanie PS jako czegoś innego niż trywialnie użyteczne. Moim zdaniem PS jest taki, że jest POS i nic tego nie zmieniło. Przeczytałem setki blogów i wyników wyszukiwania i nikt nie ma rozwiązania. Nawet tu nie ma.
Suncat2000

Odpowiedzi:


20

Domyślne formatowanie jest obcinane, określ -Wrap i zobacz pełne wyjście.

gci env: | Format-Table -Wrap -AutoSize

Wynik

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

lub jeśli wolisz, aby dane wyjściowe dokładnie symulowały program cmd.exe, spróbuj

cmd /c start /b set

Wynik

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

To już jest bardzo dobre. Jakikolwiek sposób uzyskania tego samego formatu, co standardowy monit cmd? Być może wywoływanie cmd.exe z wiersza polecenia programu PowerShell?
sancho.s

Dobrze, to właśnie zaproponowałem.
sancho.s

4

Jeśli chcesz emulować setdane wyjściowe z programu PowerShell bez wywoływaniacmd spróbuj:

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

dużo pisania, więc zawiń w funkcję:

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

Obie opcje działają dobrze.
sancho.s.12.2013
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.