【问题标题】:Display all environment variables from a running PowerShell script显示正在运行的 PowerShell 脚本中的所有环境变量
【发布时间】:2017-02-09 13:27:41
【问题描述】:

我需要在运行时在 PowerShell 脚本中显示所有已配置的环境变量。通常在显示环境变量时,我可以在 shell 中使用以下方法之一(以及其他技术,但这些很简单):

gci env:*
ls Env:

但是,我有一个从另一个程序调用的脚本,当我在脚本中使用上述调用之一时,我没有看到环境变量及其值,而是得到了 System.Collections.DictionaryEntry 类型的列表变量及其值。在 PowerShell 脚本中,如何显示所有环境变量?

【问题讨论】:

    标签: powershell environment-variables


    【解决方案1】:

    短版:

    gci env:* | sort-object name
    

    这将显示名称和值。

    【讨论】:

    • 您能否解释一下为什么它会这样以及您的命令如何修复它?
    • 这是进步的标志,因为env 太容易了。该死的 M$ 人。
    • 我想补充一点,这种行为是我在 PowerShell 4 中遇到的,但从 5.1+ 开始,我可以在脚本中使用问题中显示的变体,并期望它显示变量名称和值.请注意,gci env: 现在将按Name 对变量进行排序。虽然gci env:* 确实没有
    【解决方案2】:

    最短版本(变量按名称排序):

    gci env:
    

    【讨论】:

      【解决方案3】:

      我终于通过遍历字典中的每个条目摸索出一个解决方案:

      (gci env:*).GetEnumerator() | Sort-Object Name | Out-String
      

      【讨论】:

      • 我无法在 Linux 上运行。您是否缺少gci 来获取子项目?
      • 我没有在 powershell 核心上尝试过这个,但我的答案是 gci。请注意,这个问题是针对 [powershell] 而不是 [powershell-core],因此解决方案可能不适用于后者。
      【解决方案4】:

      带有通配符的短版过滤器

      gci env: | where name -like 'Pro*'
      

      【讨论】:

        【解决方案5】:

        我认为所提供的任何答案都与该问题无关。 OP 正在获取对象类型列表(每个成员都相同),而不是实际的变量名称和值。 这就是你所追求的:

        gci env:* | select Name,Value
        

        缩写:

        Get-ChildItem Env:* | Select-Object -Property Name,Value
        

        【讨论】:

          【解决方案6】:

          此命令也有效:

          dir env:
          

          【讨论】:

          • dirgci 都是 Get-ChildItem 的别名
          猜你喜欢
          • 1970-01-01
          • 2018-08-01
          • 1970-01-01
          • 2011-05-31
          • 1970-01-01
          • 2014-03-19
          • 2017-06-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多