【问题标题】:How to print environment variables to the console in PowerShell?如何在 PowerShell 中将环境变量打印到控制台?
【发布时间】:2018-11-24 10:38:46
【问题描述】:

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

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

echo %PATH%
echo $PATH

【问题讨论】:

标签: powershell


【解决方案1】:

在变量名前加上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(@ 987654337@)、get-help (help)、help gcmhelp help,也可能会有所帮助。
【解决方案2】:

除了马蒂亚斯的回答。

虽然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
...

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

【讨论】:

    【解决方案3】:

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

    Get-Item Env:PATH
    
    1. 它比Get-ChildItem 更短,因此更容易记住。环境变量没有层次结构。
    2. 该命令与用于setting environment variables with Powershell 的方式之一对称。 (例如:Set-Item -Path env:SomeVariable -Value "Some Value"
    3. 如果您养成这样做的习惯,您将记住如何列出所有环境变量;简单地省略入口部分。 (例如:Get-Item Env:

    一开始我觉得语法很奇怪,但在我理解了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
    

    【讨论】:

      【解决方案4】:

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

      $env:path.Split(";")

      【讨论】:

        猜你喜欢
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 2017-03-28
        • 2014-08-22
        • 2018-05-12
        • 2013-02-28
        相关资源
        最近更新 更多