在 powershell 中打印环境变量时如何不 trim 行?

How not to trim lines when printing environment variables in powershell?

根据this:

,我可以在 PowerShell 中打印环境
dir env:

所以我做到了,例如对于 Path 和其他比我的 window 更长的环境变量,我看到:

 Path                      C:\Python39\Scripts\;C:\Python39\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;...

我不想...,我想看到所有变量的环境变量值的全长。

我尝试阅读:https://superuser.com/questions/1049531/how-to-fix-truncated-powershell-output-even-when-ive-specified-width-300 并尝试 cd env: -Width 1000,或尝试 cd env: 然后 Get-ChildItem -Width 1000,它不起作用,并搜索了 google 但没有成功。 dir env: | Out-String -width 999 会导致无穷无尽的空行。有效的是 dir env: | cat,但随后变量名称消失了。

有什么方法可以查看所有具有变量名称的环境变量的未截断值吗?

从字面上理解你的问题,如果你只想在控制台上查看环境变量及其未截断的值,你可以简单地将输出格式化为列表:

Get-ChildItem env: | Format-List

这将以下列方式显示信息,如果值比可用的长,则插入视觉换行符 space:

Name  : PSModulePath
Value : C:\Users\{and so on}

out-string 在 Windows PowerShell 和 PowerShell Core 上的行为略有不同 - 看起来 PowerShell Core 使用 -Width 作为 maximum 宽度,而Windows PowerShell pads 每行到指定的宽度,因此您会看到每个环境变量由 lot 空格分隔。

PowerShell 核心

PS 7.1.3> dir env: | out-string -width 9999

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\Mike\AppData\Roaming
CommonProgramFiles             C:\Program Files\Common Files
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files
CommonProgramW6432             C:\Program Files\Common Files

Windows PowerShell

PS 5.1> dir env: | out-string -width 9999

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData




APPDATA                        C:\Users\Mike\AppData\Roaming




CommonProgramFiles             C:\Program Files\Common Files




CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files




CommonProgramW6432             C:\Program Files\Common Files

(填充不按比例!)

它有点难看,但如果你想让 Windows PowerShell 输出看起来一样,你可以这样做:

PS> ((dir env: | format-table | out-string -width 9999) -split [System.Environment]::NewLine).Trim() -join [System.Environment]::NewLine

基本上,将输出分成多行,trim 然后再将它们重新组合在一起。