ChatGPT解决这个技术问题 Extra ChatGPT

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

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

gci env:*
ls Env:

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


J
Jim Aho

较短的版本:

gci env:* | sort-object name

这将显示名称和值。


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

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

gci env:

P
Peter Mortensen

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

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

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

带有通配符过滤器的简短版本:

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

您也可以跳过管道,只需将通配符过滤器与 Get-ChildItem 一起使用。例如:gci env:Pro*
M
Mauricio_BR

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

gci env:* | select Name,Value

短缺:

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

C
Christopher Scott

此命令也适用:

dir env:

dirgci 都是 Get-ChildItem 的别名
W
WeihanLi

如果您使用的是 PowerShellCore,还可以使用 ls env:


list 是什么?我在 PowerShell (Core) v7.2.4 中看不到这样的命令。您是说 ls 吗?如果是这样,那就是 yet another alias for Get-ChildItem 并且已经在问题中说明了。
是的,应该是 ls,抱歉误导,感谢您的更正@LanceU.Matthews