从 powershell 回显/访问环境变量

eng*_*uze 2 windows powershell cmd environment-variables echo

在 Windows cmd 中,我可以使用 回显任何环境变量echo %VARIABLENAME%,例如

在此输入图像描述

但在 powershell 中,这种行为是不一致的,我无法理解。对于某些变量,例如我可以执行与 Windows cmd 中$HOME相同的操作 ( )。echo $VARIABLENAME

在此输入图像描述

但对于其他一些变量,我不能简单地 echo 而是必须使用 .NET 的类方法,例如

在此输入图像描述

我想:

  1. 了解Powershell和Windows cmd之间的区别。为什么它们在访问和打印环境变量时表现不同。
  2. 理解为什么某些变量在 powershell 中是可回显的,而其他变量则不是。这背后的规则是什么。

我是 powershell 新手。这个问题的目的不仅仅是打印变量,而是了解powershell中的工作原理以及windows cmd之间的区别,以便我可以更好地使用它。

NiM*_*Mux 5

PowerShell 通过范围公开环境变量$Env:(您可以在此处阅读有关范围的更多信息)

因此,要访问USERPROFILE环境变量,您可以执行以下操作(注意,我在这里使用 Write-Host 代替 echo,有关两者之间差异的详细信息,请参阅此答案):

Write-Host $Env:USERPROFILE

PowerShell 还公开了许多自动变量,所有脚本和命令都可以使用这些变量。 $HOME例如就是这样一个自动变量。

有关这些的更多信息,请参阅自动变量