我开始使用PowerShell,并试图找出如何echo通过控制台的系统环境变量来读取它.
以下两者都不起作用.第一个只打印%PATH%,第二个打印没有.
echo %PATH%
echo $PATH
Run Code Online (Sandbox Code Playgroud)
Mat*_*sen 99
使用以下命令作为变量名前缀env:
$env:path
Run Code Online (Sandbox Code Playgroud)
您还可以通过env驱动器枚举所有变量:
Get-ChildItem env:
Run Code Online (Sandbox Code Playgroud)
小智 15
我认为以下效果最好:
Get-Item Env:PATH
Run Code Online (Sandbox Code Playgroud)
Get-ChildItem它更短,因此比(环境变量没有层次结构)更容易记住。Set-Item -Path env:SomeVariable -Value "Some Value")Get-Item Env:)我一开始发现语法很奇怪,但在我理解Providers的概念后,事情开始变得更有意义。本质上,PowerShell 允许您以类似于文件系统的方式导航系统的不同组件。
后面的冒号有什么意义Env:?尝试列出通过提供商提供的所有“驱动器”,如下所示:
PS> Get-PSDrive
Run Code Online (Sandbox Code Playgroud)
我只看到一些结果(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
Run Code Online (Sandbox Code Playgroud)
not*_*bit 10
除了Mathias的回答。
虽然在 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
...
Run Code Online (Sandbox Code Playgroud)
这些还包括您可能在配置文件启动脚本中设置的内容。
作为对其他答案的补充,
在列出所有环境变量的情况下,为了简洁命令,您可以使用dir、ls和gci(Get-ChildItem 的缩写),因为它们是 的三个别名Get-ChildItem。
因此,以下所有命令都是相同的并且可以在这种情况下使用:
Get-ChildItem Env:
Run Code Online (Sandbox Code Playgroud)
或者
dir Env:
Run Code Online (Sandbox Code Playgroud)
或者
ls Env:
Run Code Online (Sandbox Code Playgroud)
或者
gci Env:
Run Code Online (Sandbox Code Playgroud)
更多信息请参见shellgeek。
此外,作为一个实际用例,您可以获得基于Name或Value类似的按字母顺序排序的环境变量列表:
Get-ChildItem Env: | Sort Name
Run Code Online (Sandbox Code Playgroud)
或者
Get-ChildItem Env: | Sort Value
Run Code Online (Sandbox Code Playgroud)
仅供参考:您不能在上述命令中替换Get-ChildItem Env:为Get-Item Env:(列表不会排序并保持不变)。因此,在这种情况下,可能比BitBite在这个答案中提到的Get-ChildItem更受欢迎。Get-Item
最后,您可以对环境变量的特定记录的值进行排序,如下所示:
(Get-ChildItem Env:PATH).Value.Split(';') | Sort
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32755 次 |
| 最近记录: |