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

How to print environment variables to the console in PowerShell?

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

以下任何一项均不起作用。第一个仅打印%PATH%,第二个不打印任何内容。

1
2
echo %PATH%
echo $PATH


env

前缀变量名称

1
$env:path

例如,如果要打印环境值" MINISHIFT_USERNAME"的值,则命令将为:

1
$env:MINISHIFT_USERNAME

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

1
Get-ChildItem env:


除了Mathias的答案。

尽管在OP中未提及,但是如果您还需要查看Powershell特定/相关的内部变量,则需要使用Get-Variable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ 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
...

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


以下是我认为最好的方法:

1
Get-Item Env:PATH
  • 它更短,因此比Get-ChildItem更容易记住。没有环境变量的层次结构。
  • 该命令与通过Powershell设置环境变量所使用的一种方式对称。 (例如:Set-Item -Path env:SomeVariable -Value"Some Value")
  • 如果您习惯以这种方式进行操作,那么您将记住如何列出所有环境变量。只需省略输入部分。 (例如:Get-Item Env:)
  • 我一开始发现语法很奇怪,但是在我理解了提供者的概念之后,事情开始变得更有意义了。本质上,PowerShell让您以类似于文件系统的方式浏览系统的各个组件。

    Env:中尾随冒号的意义是什么?尝试列出通过提供商提供的所有"驱动器",如下所示:

    1
    PS> Get-PSDrive

    我只看到一些结果...(别名,C,Cert,D,Env,Function,HKCU,HKLM,Variable,WSMan)。很明显,env仅仅是另一个"驱动器",而冒号是Windows中使用过的任何人都熟悉的语法。

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

    1
    2
    3
    4
    5
    Get-ChildItem C:\\Windows
    Get-Item C:
    Get-Item Env:
    Get-Item HKLM:
    Get-ChildItem HKLM:SYSTEM