Windows PowerShell 可以使用对象。利用 Windows PowerShell,您可创建变量(本质上命名为对象)以保留输出以备后用。如果您已习惯于在其他 shell 中处理变量,请谨记,Windows PowerShell 变量是对象,而非文本。
变量始终可通过首字符 $ 指定,并且在变量名称中可以包含所有的字母数字字符或下划线。
创建变量
通过键入有效的变量名称可以创建变量:
PS> $loc PS>
由于 $loc 没有值,因此将不会返回任何结果。您可以创建变量,并可同时向其赋值。Windows PowerShell 只能创建目前尚不存在的变量,否则,它会将指定的值赋予已存在的变量。若要在变量 $loc 中存储当前位置,请键入:
$loc = Get-Location
由于输出已发送到 $loc,因此在键入此命令后将不会显示任何输出。在 Windows PowerShell 中,显示的输出实际上是附加功能,因为未定向的数据始终会发送到屏幕上。键入 $loc 将显示当前位置:
PS> $loc Path ---- C:\temp
可以使用 Get-Member 来显示有关变量内容的信息。通过管道将 $loc 传递给 Get-Member,输出会表明它是 PathInfo 对象,这类似于 Get-Location 的输出:
PS> $loc | Get-Member -MemberType Property TypeName: System.Management.Automation.PathInfo Name MemberType Definition ---- ---------- ---------- Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {... ProviderPath Property System.String ProviderPath {get;}
对变量进行操作
Windows PowerShell 提供了几条用于对变量进行操作的命令。通过键入以下命令可以查看极具可读性的完整列表:
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap
除了当前 Windows PowerShell 会话中创建的变量之外,还存在几个系统定义的变量。可以使用 Remove-Variable cmdlet 清除所有不受 Windows PowerShell 控制的变量。键入以下命令可清除所有变量:
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue
这将生成确认提示,如下所示:
Confirm Are you sure you want to perform this action? Performing operation "Remove Variable" on Target "Name: Error". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):A
随后,如果运行 Get-Variable cmdlet,则将看到剩余的 Windows PowerShell 变量。由于还存在 Windows PowerShell 变量驱动器,因此也可通过键入以下命令来显示所有的 Windows PowerShell 变量:
Get-ChildItem variable:
使用 Cmd.exe 变量
尽管 Windows PowerShell 不是 Cmd.exe,但它也运行于命令 shell 环境中,并且可以在 Windows 的任意环境中使用相同的可用变量。这些变量是通过名为 env: 的驱动器公开的。键入以下命令可查看这些变量:
Get-ChildItem env:
虽然标准变量 cmdlet 不适用于 env: 变量,但仍可通过指定 env: 前缀来使用这些变量。例如,若要查看操作系统的根目录,则可通过键入以下命令来使用 Windows PowerShell 中的命令 shell %SystemRoot% 变量:
PS> $env:SystemRoot C:\WINDOWS
也可创建和修改 Windows PowerShell 中的环境变量。从 Windows PowerShell 访问的环境变量符合 Windows 之外的环境变量标准规则。