【发布时间】:2018-11-24 10:38:46
【问题描述】:
我开始使用 PowerShell,并试图弄清楚如何将系统环境变量 echo 发送到控制台以读取它。
以下都不起作用。第一个只打印%PATH%,第二个什么也不打印。
echo %PATH%
echo $PATH
【问题讨论】:
-
echo $env:Path
标签: powershell
我开始使用 PowerShell,并试图弄清楚如何将系统环境变量 echo 发送到控制台以读取它。
以下都不起作用。第一个只打印%PATH%,第二个什么也不打印。
echo %PATH%
echo $PATH
【问题讨论】:
echo $env:Path
标签: powershell
在变量名前加上env:
$env:path
例如,如果要打印环境值“MINISHIFT_USERNAME”的值,那么命令将是:
$env:MINISHIFT_USERNAME
您还可以通过env 驱动器枚举所有变量:
Get-ChildItem env:
【讨论】:
$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(@ 987654337@)、get-help (help)、help gcm 和 help help,也可能会有所帮助。
除了马蒂亚斯的回答。
虽然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 更短,因此更容易记住。环境变量没有层次结构。Set-Item -Path env:SomeVariable -Value "Some Value")Get-Item Env:)一开始我觉得语法很奇怪,但在我理解了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(";")
【讨论】: