显示正在运行的 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:
【讨论】:
dir
和 gci
都是 Get-ChildItem
的别名以上是关于显示正在运行的 PowerShell 脚本中的所有环境变量的主要内容,如果未能解决你的问题,请参考以下文章