PowerShell:Env:避免截断环境变量


17

PowerShell显示环境变量,每个变量一行。如果变量的值足够长,则会将其截断并附加省略号:

> gci env:

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

有没有办法像标准cmd提示符中那样一次获取所有var的完整值?(对于Powershell get-childitem env:path给出的答案返回省略的一行,那么,如何使用有用的内容将不适用)。


我已经花了一个小时来寻找使PowerShell显示我的路径环境变量的完整内容的方法。即使我指定了更宽的格式,它也总是将其截断为2452个字符,带有或不带有省略号。这使得将PS视为无用的东西是不可能的。我对PS的看法是它是POS,没有任何改变。我已经阅读了数百篇博客和搜索结果,没有人找到解决方案。甚至不在这里。
Suncat2000

Answers:


23

默认格式被截断,指定-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\

这已经非常好了。以某种方式获得与标准cmd提示符相同的格式吗?也许从PowerShell提示符中调用cmd.exe?
sancho.s恢复莫妮卡

好,那是我的建议。
sancho.s恢复莫妮卡

4

如果要模拟Powershell的set输出而不调用,请cmd尝试:

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

很多类型的输入,因此将其包装在一个函数中:

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

两种选择都可以。
sancho.s恢复莫妮卡2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.