显示正在运行的 PowerShell 脚本中的所有环境变量

Posted

技术标签:

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

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

gci env:*
ls Env:

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

【问题讨论】:

【参考方案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 的别名

以上是关于显示正在运行的 PowerShell 脚本中的所有环境变量的主要内容,如果未能解决你的问题,请参考以下文章

运行powershell脚本,以便检查并邮寄故障

使用PowerShell脚本的Azure SQL备份自动化

从 C# 异步运行多个 PowerShell 脚本

Ansible 中的 Powershell 脚本

如何使用 Python 中的参数运行 PowerShell 脚本

从批处理文件运行 Powershell 脚本中的参数