【问题标题】:Powershell [Environment] inconsistenciesPowershell [环境] 不一致
【发布时间】:2021-01-16 08:08:28
【问题描述】:

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

【问题讨论】:

    标签: powershell environment-variables


    【解决方案1】:

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

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

    [Environment]::USERPROFILE 不返回任何内容,因为USERPROFILE 不是[System.Environment] 类的静态属性。您可以像这样列出所有静态属性:

        [System.Environment] | Get-Member -MemberType Properties -Static
    

    您可以添加新的环境变量,然后使用[Environment]::GetEnvironmentVariables 返回这些变量。例如:

        $env:TEST = "This is a test"
    

    更多好的信息和环境变量的例子(不是[Environment]类)在这里:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2013-04-07
      • 2020-05-21
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多