使用变量存储对象Using variables to store objects

本文内容

PowerShell 处理对象。使用 PowerShell 可以创建称为“变量”的命名对象。变量名称可以包含下划线字符和任何字母数字字符。在 PowerShell 中使用时,始终使用变量名称后跟的 $ 字符指定变量。

创建变量Creating a variable

可以通过键入有效的变量名称来创建变量:

  1. PS> $loc
  2. PS>

此示例不会返回任何结果,因为 $loc 不具有值。你可以在同一步骤中创建变量并为其赋值。如果不存在,PowerShell 将仅创建变量。否则,它将指定的值分配给现有变量。下面的示例将当前位置存储在变量 $loc 中:

  1. $loc = Get-Location

键入此命令时,PowerShell 不会显示任何输出。PowerShell 将“Get-Location”的输出发送到 $loc在 PowerShell 中,未分配或未重定向的数据将发送到屏幕。键入 $loc 将显示当前位置:

  1. PS> $loc
  2. Path
  3. ----
  4. C:\temp

可以使用 Get-Member 显示有关变量内容的信息。Get-Member 表示 $loc 是 PathInfo 对象,类似于来自 Get-Location 的输出:

  1. PS> $loc | Get-Member -MemberType Property
  2. TypeName: System.Management.Automation.PathInfo
  3. Name MemberType Definition
  4. ---- ---------- ----------
  5. Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
  6. Path Property System.String Path {get;}
  7. Provider Property System.Management.Automation.ProviderInfo Provider {...
  8. ProviderPath Property System.String ProviderPath {get;}

操作变量Manipulating variables

PowerShell 提供多个用以操作变量的命令。你可以通过键入以下内容看到可读形式的完整列表:

  1. Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap

PowerShell 还会创建系统定义的多个变量。可以使用 Remove-Variable cmdlet 来删除当前会话中所有不受 PowerShell 控制的变量。键入以下命令来清除所有变量:

  1. Remove-Variable -Name * -Force -ErrorAction SilentlyContinue

运行上述命令后,Get-Variable cmdlet 显示 PowerShell 系统变量。

PowerShell 还会创建一个变量驱动器。使用下面的示例显示使用变量驱动器的所有 PowerShell 变量:

  1. Get-ChildItem variable:

使用 cmd.exe 变量Using cmd.exe variables

PowerShell 可以使用任何 Windows 进程可用的相同环境变量,其中包括 cmd.exe。这些变量通过名为 env: 的驱动器公开。可以通过键入以下命令查看这些变量:

  1. Get-ChildItem env:

标准 *-Variable cmdlet 未设计为使用环境变量。使用 env: 驱动器前缀访问环境变量。例如,cmd.exe 中的 %SystemRoot% 变量包含操作系统的根目录名称。在 PowerShell 中,使用 $env:SystemRoot 可访问相同的值。

  1. PS> $env:SystemRoot
  2. C:\WINDOWS

还可以从 PowerShell 内部创建和修改环境变量。PowerShell 中的环境变量遵循操作系统中其他地方使用的环境变量的相同规则。下面的示例创建一个新的环境变量:

  1. $env:LIB_PATH='/usr/local/lib'

尽管没有要求,但环境变量名称通常使用全部大写字母。