ChatGPT解决这个技术问题 Extra ChatGPT

如何在 PowerShell 中将环境变量打印到控制台?

我开始使用 PowerShell,并试图弄清楚如何将系统环境变量 echo 到控制台以读取它。

以下都不起作用。第一个只打印 %PATH%,第二个什么也不打印。

echo %PATH%
echo $PATH

h
hagrawal

使用 env 作为变量名的前缀:

$env:path

例如,如果要打印环境值“MINISHIFT_USERNAME”的值,那么命令将是:

$env:MINISHIFT_USERNAME

您还可以通过 env 驱动器枚举所有变量:

Get-ChildItem env:

我自己喜欢$Env:Path.Split(';')(每行输出一个目录)。
当然,或者$env:Path -split ';'
@AmirKatz 输出是相同的,因为这两个操作做完全相同的事情:) -split 是一个正则表达式运算符, String.Split() 不是
短期使用gci env:
@navigaid get-alias 列出了更多,包括 gal(可以通过 get-alias | where {$_.Name -like '*al*'} 找到,此外,gal | gm 显示 where 可以过滤的所有属性名称。get-command (gcm)、get-help ( help)、help gcmhelp help,也可能会有所帮助。
n
not2qubit

除了马蒂亚斯的回答。

虽然 OP 中没有提到,但如果您还需要查看 Powershell 特定/相关的内部变量,则需要使用 Get-Variable

$ Get-Variable

Name                           Value
----                           -----
$                              name
?                              True
^                              gci
args                           {}
ChocolateyTabSettings          @{AllCommands=False}
ConfirmPreference              High
DebugPreference                SilentlyContinue
EnabledExperimentalFeatures    {}
Error                          {System.Management.Automation.ParseException: At line:1 char:1...
ErrorActionPreference          Continue
ErrorView                      NormalView
ExecutionContext               System.Management.Automation.EngineIntrinsics
false                          False
FormatEnumerationLimit         4
...

这些还包括您可能在配置文件启动脚本中设置的内容。


B
BitBite

以下是我认为效果最好的:

Get-Item Env:PATH

它比 Get-ChildItem 更短,因此更容易记住。环境变量没有层次结构。该命令与用于使用 Powershell 设置环境变量的方法之一对称。 (EX: Set-Item -Path env:SomeVariable -Value "Some Value") 如果你习惯这样做,你会记得如何列出所有环境变量;简单地省略入口部分。 (例如:获取项目环境:)

一开始我觉得语法很奇怪,但是在我理解了 Providers 的概念之后,事情开始变得更有意义了。本质上,PowerShell 让您以类似于文件系统的方式导航系统的不同组件。

Env: 中的尾随冒号有什么意义?尝试列出通过提供程序可用的所有“驱动器”,如下所示:

PS> Get-PSDrive

我只看到一些结果...(Alias、C、Cert、D、Env、Function、HKCU、HKLM、Variable、WSMan)。很明显,Env 只是另一个“驱动器”,而冒号对于任何在 Windows 中工作过的人来说都是熟悉的语法。

您可以浏览驱动器并选择特定值:

Get-ChildItem C:\Windows
Get-Item C:
Get-Item Env:
Get-Item HKLM:
Get-ChildItem HKLM:SYSTEM

z
zachbugay

我自己遇到了这个。我想看看路径,但每个路径都在单独的行上。这会打印出路径,并用分号将其拆分。

$env:path.Split(";")