Powershell[环境]不一致

Powershell[环境]不一致,powershell,environment-variables,Powershell,Environment Variables,我试图在代码中保持一致,使用$env:或[Environment],但不能混用。然而,我看到似乎实施的内容存在一些不一致之处。 所以[Environment]::UserName和$env:UserName都可以正常工作$env:computerName可以工作,但[Environment]:computerName不能。奇怪的是,[Environment]::MachineName确实存在,尽管[Environment]::GetEnvironmentVariables()说[Environm

我试图在代码中保持一致,使用
$env:
[Environment]
,但不能混用。然而,我看到似乎实施的内容存在一些不一致之处。 所以
[Environment]::UserName
$env:UserName
都可以正常工作
$env:computerName
可以工作,但
[Environment]:computerName
不能。奇怪的是,
[Environment]::MachineName
确实存在,尽管
[Environment]::GetEnvironmentVariables()
[Environment]::COMPUTERNAME
存在,而不是
[Environment]::MachineName
。另外,
[Environment]::GetEnvironmentVariables()
[Environment]::USERPROFILE
应该可以工作,但实际上它什么也不返回。
当我查看有关
[Environment]
类型属性的Microsoft文档时,我确实看到了
MachineName
,以及
UserName
,而没有提到
UserProfile
。因此,显然这是正确的资源。但这就引出了一个问题,为什么
[Environment]::GetEnvironmentVariables()
会返回如此不一致的信息?

[Environment]
或者更具体地说
[System.Environment]
仅限于您提供的链接中记录的静态方法和属性

[Environment]:GetEnvironmentVariables
返回环境变量及其值的列表,其中一些是操作系统为您设置的(
“COMPUTERNAME”
“USERNAME”
,等等),它们与一些
[Environment]
属性重叠,但也包括应用程序添加或用户添加的任何环境变量,通常使用系统属性/高级/环境变量

[Environment]:USERPROFILE
不返回任何内容,因为
USERPROFILE
不是
[System.Environment]
类上的静态属性。您可以按如下方式列出所有静态属性:

[System.Environment]|获取成员-成员类型属性-静态
您可以添加新的环境变量,然后使用
[environment]::GetEnvironmentVariables
返回这些变量。例如:

$env:TEST=“这是一个测试”

更多关于环境变量的信息和示例(不是
[environment]
类),请参见: