PowerShell: Env: избегать усечения переменных среды

16

PowerShell отображает переменные среды, по одной строке для каждой. Если переменная имеет достаточно длинное значение, она усекается и добавляет многоточие:

> gci env:

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

Есть ли способ получить полные значения для всех переменных одновременно, как в стандартной командной строке? (ответы, приведенные для Powershell get-childitem env: path возвращает эллиптическую строку, как получить что-то полезное? не применимы, тогда).

sancho.s Восстановить Монику
источник
Я потратил час на поиски способов заставить PowerShell отображать полное содержимое моей переменной среды path. Он всегда усекает его до 2452 символов с многоточием или без него, даже если я указываю более широкое форматирование. Это делает невозможным трактовать PS как что-либо кроме тривиально полезного. Мое мнение о PS таково, что это POS, и ничего не изменилось. Я прочитал сотни блогов и результатов поиска, и ни у кого нет решения. Даже здесь.
Suncat2000

Ответы:

21

Форматирование по умолчанию усекает, задайте -Wrap и смотрите полный вывод.

gci env: | Format-Table -Wrap -AutoSize

Результат

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

или, если вы предпочитаете, чтобы выходные данные точно имитировали cmd.exe, попробуйте

cmd /c start /b set

Результат

PSModulePath=C:\Users\KNUCKLE-DRAGGER\Documents\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
Knuckle-Dragger
источник
Это уже очень хорошо. Любой способ получить тот же формат, что и стандартное приглашение cmd? Возможно, вызывая cmd.exe из командной строки PowerShell?
sancho.s Восстановить Монику
Хорошо, это то, что я предлагал.
sancho.s Восстановить Монику
4

Если вы хотите эмулировать setвывод из powershell без вызова cmdtry:

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

много печатать, поэтому оберните его в функцию:

function set {dir env: | %{"{0}={1}" -f $_.Name,$_.Value}}
Zdan
источник
Оба варианта работают нормально.
sancho.s Восстановить Монику