about_Environment_Variables

主题
    about_Environment_Variables

简短说明
    说明如何在 Windows PowerShell 中访问 Windows 环境变量。
    

详细说明
    环境变量存储了操作系统环境的相关信息。此信息包括操作系统路径、
    操作系统使用的处理器的数量以及临时文件夹的位置之类的详细信息。

    环境变量存储了由操作系统和其他程序使用的数据。例如,WINDIR 环境变量
    包含 Windows 安装目录的位置。程序可以查询此变量的值以确定 Windows 操作
    系统文件的位置。

    Windows PowerShell 使您可以查看和更改 Windows 环境变量,包括在注册表中
    设置的变量以及为特定会话设置的变量。Windows PowerShell Environment 提供
    程序简化了这个过程,使查看和更改环境变量变得很容易。
    
    与 Windows PowerShell 中其他类型的变量不同,环境变量和它们的值由子会话
    (如本地后台作业和运行模块成员的会话)来继承。这就使环境变量非常适合
    存储父会话和子会话中都需要的值。
   

  Windows PowerShell Environment 提供程序
      通过 Windows PowerShell Environment 提供程序,可以在 Windows PowerShell 的 
      Windows PowerShell 驱动器(Env: 驱动器)中访问 Windows 环境变量。
      此驱动器与文件系统驱动器非常相像。要进入 Env: 驱动器,请键入:


      set-location env:


      随后,要显示 Env: 驱动器的内容,请键入:


      get-childitem


      您可从任何其他 Windows PowerShell 驱动器中查看 Env: 驱动器中的
      环境变量,而且可以进入 Env: 驱动器来查看和更改环境变量。


  环境变量对象
      在 Windows PowerShell 中,每个环境变量都通过作为 System.Collections.Dictionary
      Entry 类的实例的对象来表示。

    
      在每个 DictionaryEntry 对象中,环境变量的名称为字典键。环境变量的值为字典值。


      若要在 Windows PowerShell 中显示环境变量,需要获取表示该变量的对象,然后显示
      该对象属性的值。若要在 Windows PowerShell 中更改环境变量,请使用与 DictionaryEntry 
      对象相关联的方法。


      要在 Windows PowerShell 中显示表示环境变量的对象的属性和方法,请使用 Get-Member cmdlet。
      例如,要显示 Env: 驱动器中所有对象的方法和属性,请键入:


      get-item -path env:* |get-member


  显示环境变量
      可以使用包含 Item 名词的 cmdlet (Item cmdlet) 来显示和更改环境变量的值。
      由于环境变量不具有子项,因此 Get-Item 和 Get-ChildItem 的输出相同。


      若要引用环境变量,请键入 Env: 驱动器名称,然后在后面键入该变量的名称。
      例如,若要显示 COMPUTERNAME 环境变量的值,请键入:


      get-childitem env:computername


      若要显示所有环境变量的值,请键入:


      get-childitem env:


      默认情况下,Windows PowerShell 将按环境变量的检索顺序显示这些变量。若要
      按变量名称对环境变量列表进行排序,请将 Get-ChildItem 命令的输出通过管道
      传递给 Sort-Object cmdlet。例如,从任何 Windows PowerShell 驱动器中,请键入:


      get-childitem env: | sort name


      也可以通过使用 Set-Location cmdlet 进入 Env: 驱动器:


      set-location env:


      在位于 Env: 驱动器中时,可以从路径中省略 Env: 驱动器名称。
      例如,若要显示所有环境变量,请键入:


      get-childitem


      若要从 Env: 驱动器中显示 COMPUTERNAME 变量的值,请键入:


      get-childitem computername


      也可以使用 Windows PowerShell 中的表达式分析程序来显示和更改
      环境变量的值,而无需使用 cmdlet。若要显示环境变量的值,
      请使用以下语法:


      $env:<变量名称>


      例如,若要显示 WINDIR 环境变量的值,请在 Windows PowerShell 命令提示符下键入以下命令:


      $env:windir


      在此语法中,美元符号 ($) 表示变量,驱动器名称表示环境变量。


  更改环境变量
      若要对环境变量进行永久性更改,请使用“控制面板”中的“系统”
      (“高级”选项卡或“高级系统设置”选项)将更改存储在注册表中。

      在 Windows PowerShell 中更改环境变量时,所做的更改仅影响当前会话。
      这种行为类似于基于 Windows 的环境中的 Set 命令以及基于 UNIX 的
      环境中的 Setenv 命令的行为。

      此外,您还必须具有更改变量值的权限。如果尝试更改值但没有足够的权限,
      则命令将无法执行,且 Windows PowerShell 将显示错误。

      可以使用以下语法,在不使用 cmdlet 的情况下更改变量的值:


          $env:<变量名称> = "<新值>"


      例如,若要将";c:\temp"追加到 Path 环境变量的值中,请使用以下语法:


      $env:path = $env:path + ";c:\temp"
    

      也可以使用 Set-Item、Remove-Item 和 Copy-Item 等 Item cmdlet 来更改环境变量的值。例如,若要
      使用 Set-Item cmdlet 将";c:\temp"追加到 Path 环境变量的值中,请使用以下语法:


          set-item -path env:path -value ($env:path + ";c:\temp")

    
      在此命令中,值括在圆括号中,因此该值为一个单元。


  保存对环境变量的更改
      若要在每个 Windows PowerShell 会话中都创建或更改环境变量的值,可将所做更改添加到 Windows 
      PowerShell 配置文件中。

      例如,若要在每个 Windows PowerShell 会话中都将 C:\Temp 目录添加到 Path 环境变量中,请将以下命
      令添加到 Windows PowerShell 配置文件中。

      $env:path = $env:path + ";c:\temp"

      若要将命令添加到现有配置文件如"CurrentUser,AllHosts"配置文件中,请键入:

      add-content -path $profile.CurrentUserAllHosts -value '$env:path = 
      $env:path + ";c:\temp"'

  用于存储首选项的环境变量
      Windows PowerShell 的功能可使用环境变量来存储用户首选项。这些变量的作用与首选项变量类似,但它们
      由创建它们的会话的子会话来继承。有关首选项变量的详细信息,请参阅 about_preference_variables。

      用于存储首选项的环境变量包括:

        PSModulePath
            存储默认模块目录的路径。未指定指向模块的完整路径时,Windows PowerShell 将在指定目录中查找
            模块。

            $env:PSModulePath 的默认值为:

                $home\Documents\WindowsPowerShell\Modules; $pshome\Modules

            Windows PowerShell 在注册表中设置"$pshome\Modules"的值。
            Windows PowerShell 每次启动时都将设置
            "$home\Documents\WindowsPowerShell\Modules"的值。

            另外,将模块安装到其他目录(如 Program Files 目录)的安装程序会将它们的位置追加到 
            PSModulePath 的值中。

            若要更改默认模块目录,请更改 PSModulePath 环境变量的值。

            例如,若要将"C:\ps-test\Modules"目录添加到 PSModulePath 环境变量的值中,请键入:

                $env:PSModulePath = $env:PSModulePath + ";c:\ps-test\Modules"

            命令中的分号 (;) 将新路径与列表中该路径前面的路径分隔开。

            所做的更改仅影响当前会话,除非您将一个更改该值的命令添加到配置文件中,或使用“控制面板”中的
            “系统”在注册表中更改 PSModulePath 环境变量的值。
            
            有关详细信息,请参阅 about_Modules。


另请参阅
    Environment(提供程序)