我开始使用 PowerShell,并试图弄清楚如何将系统环境变量 echo
到控制台以读取它。
以下都不起作用。第一个只打印 %PATH%
,第二个什么也不打印。
echo %PATH%
echo $PATH
echo $env:Path
使用 env
作为变量名的前缀:
$env:path
例如,如果要打印环境值“MINISHIFT_USERNAME”的值,那么命令将是:
$env:MINISHIFT_USERNAME
您还可以通过 env
驱动器枚举所有变量:
Get-ChildItem env:
除了马蒂亚斯的回答。
虽然 OP 中没有提到,但如果您还需要查看 Powershell 特定/相关的内部变量,则需要使用 Get-Variable
:
$ Get-Variable
Name Value
---- -----
$ name
? True
^ gci
args {}
ChocolateyTabSettings @{AllCommands=False}
ConfirmPreference High
DebugPreference SilentlyContinue
EnabledExperimentalFeatures {}
Error {System.Management.Automation.ParseException: At line:1 char:1...
ErrorActionPreference Continue
ErrorView NormalView
ExecutionContext System.Management.Automation.EngineIntrinsics
false False
FormatEnumerationLimit 4
...
这些还包括您可能在配置文件启动脚本中设置的内容。
以下是我认为效果最好的:
Get-Item Env:PATH
它比 Get-ChildItem 更短,因此更容易记住。环境变量没有层次结构。该命令与用于使用 Powershell 设置环境变量的方法之一对称。 (EX: Set-Item -Path env:SomeVariable -Value "Some Value") 如果你习惯这样做,你会记得如何列出所有环境变量;简单地省略入口部分。 (例如:获取项目环境:)
一开始我觉得语法很奇怪,但是在我理解了 Providers 的概念之后,事情开始变得更有意义了。本质上,PowerShell 让您以类似于文件系统的方式导航系统的不同组件。
Env:
中的尾随冒号有什么意义?尝试列出通过提供程序可用的所有“驱动器”,如下所示:
PS> Get-PSDrive
我只看到一些结果...(Alias、C、Cert、D、Env、Function、HKCU、HKLM、Variable、WSMan)。很明显,Env
只是另一个“驱动器”,而冒号对于任何在 Windows 中工作过的人来说都是熟悉的语法。
您可以浏览驱动器并选择特定值:
Get-ChildItem C:\Windows
Get-Item C:
Get-Item Env:
Get-Item HKLM:
Get-ChildItem HKLM:SYSTEM
我自己遇到了这个。我想看看路径,但每个路径都在单独的行上。这会打印出路径,并用分号将其拆分。
$env:path.Split(";")
不定期副业成功案例分享
$Env:Path.Split(';')
(每行输出一个目录)。$env:Path -split ';'
-split
是一个正则表达式运算符,String.Split()
不是gci env:
get-alias
列出了更多,包括gal
(可以通过get-alias | where {$_.Name -like '*al*'}
找到,此外,gal | gm
显示where
可以过滤的所有属性名称。get-command
(gcm
)、get-help
(help
)、help gcm
和help help
,也可能会有所帮助。