gpt4 book ai didi

powershell - Env : and [System. Environment] 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 00:54:23 27 4
gpt4 key购买 nike

@mklement 在 how to sort a txt file in specific order in Powershell 中给出了很好的回答, 这让我想知道...

Env:[System.Environment] 有什么区别?

为什么 [Environment]::NewLine 可用,但 $Env:NewLine 不存在?

最佳答案

[System.Environment] is the .Net framework's static environment class .它提供与“环境”相关的静态方法,包括获取环境变量的方法。

$env:WHATEVER 是一种特殊的变量语法,您可以使用变量语义访问 PSProvider 的内容。

What is a PSProvider? (另见 about_Providers)

它基本上是一种通过类似于文件系统的单一界面访问分层数据存储的方法。

事实上 FileSystem 本身就是 PowerShell 中的一个 PSProvider,这就是为什么处理文件的 cmdlet 不提及文件(即:Get-ChildItemGet-ContentSet-Location 等)。

要查看可用的提供商,请使用 Get-PSProvider :

Name                 Capabilities                                                Drives                                                     
---- ------------ ------
Registry ShouldProcess, Transactions {HKLM, HKCU}
Alias ShouldProcess {Alias}
Environment ShouldProcess {Env}
FileSystem Filter, ShouldProcess, Credentials {A, C, D, P...}
Function ShouldProcess {Function}
Variable ShouldProcess {Variable}
Certificate ShouldProcess {Cert}
WSMan Credentials {WSMan}

使用Get-PSDrive只查看驱动器本身:

Name           Used (GB)     Free (GB) Provider      Root                   
---- --------- --------- -------- ----
A 103.23 46.58 FileSystem A:\
Alias Alias
C 200.02 22.77 FileSystem C:\
Cert Certificate \
D 1048.88 2677.13 FileSystem D:\
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
O 49.34 10.16 FileSystem O:\
P 335.32 176.50 FileSystem P:\
S FileSystem S:\
Variable Variable
WSMan WSMan

Environment 也是一个 PSProvider,您可以通过尝试导航到它的 PSDrive 来查看它:

Set-Location Env:

或者浏览它:

Get-ChildItem Env:

甚至获取其内容:

Get-Content Env:\COMPUTERNAME
Get-ChildItem Env: | Get-Content

特殊变量语法是访问某些 PSProvider 的一种简写方式(它们并不都支持它),它最常与环境一起使用(我敢猜测语法是专门为环境创建的)。

该语法确实适用于文件系统,但它非常笨拙

${C:\users\briantist\test.txt}

制表符补全不能正确使用该语法。

如果您尝试使用注册表提供程序之类的东西,它会完成选项卡,但在您运行它时会抛出一个关于它没有被实现的异常。

这是一个有趣但无用的方法:使用 Variable:\ provider:

$test = 'test'
$Variable:test

关于powershell - Env : and [System. Environment] 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52348032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com