Variable Provider

提供程序名称

Variable

驱动器

Variable:

简短说明

提供对 Windows PowerShell 变量及其值的访问。

详细说明

使用 Windows PowerShell Variable 提供程序,您可以在当前控制台中获取、添加、更改、清除和删除 Windows PowerShell 变量。

Windows PowerShell Variable 提供程序支持 Windows PowerShell 创建的变量,包括自动变量、首选项变量以及您创建的变量。

Variable 提供程序是一个仅包含变量对象的平面命名空间。这些变量没有子项。

大多数变量是 System.Management.Automation.PSVariable 类的实例。不过,也存在某些变体。例如,“?”变量是 QuestionMarkVariable 类的成员,而“MaximumVariableCount”变量是 SessionStateCapacityVariable 类的成员。

Variable 提供程序在 Variable: 驱动器中公开其数据存储。若要使用变量,可以将您的位置更改为 Variable: 驱动器(“set-location variable:”),也可以从其他任何 Windows PowerShell 驱动器中使用变量。若要从其他位置引用变量,请在路径中使用驱动器名称 (Variable:)。

Windows PowerShell 提供一组专门用于查看和更改变量的 cmdlet:

-- Get-Variable

-- New-Variable

-- Set-Variable

-- Remove-Variable

-- Clear-Variable

在使用这些 cmdlet 时,无需在名称中指定 Variable: 驱动器。

Variable 提供程序支持名称中包含 Item 名词的所有 cmdlet (Item cmdlet)(Invoke-Item 除外)。Variable 提供程序支持 Get-ContentSet-Content cmdlet。但是,该提供程序不支持名称中包含 ItemProperty 名词的 cmdlet (ItemProperty cmdlet),也不支持任何 cmdlet 中的 Filter 参数。

还可以使用 Windows PowerShell 表达式分析程序来创建、查看和更改变量的值,而无需使用 cmdlet。在直接使用变量时,使用美元符号 ($) 可将名称标识为变量,且使用赋值运算符 (=) 可建立和更改该变量的值。例如,“$p = get-process”将创建“p”变量,并将“get-process”命令的结果存储到该变量中。

对变量的所有更改仅会影响当前会话。若要保存更改,请将这些更改添加到 Windows PowerShell 配置文件中,或使用 Export-Console 保存当前控制台。

示例

转到 Variable: 驱动器

-------------------------- 示例 1 --------------------------

此命令将当前位置更改为 Variable: 驱动器。您可以从 Windows PowerShell 的任一驱动器中使用此命令。若要返回到文件系统驱动器,请键入驱动器名称。例如,键入“set-location c:”。

set-location variable:

显示变量的值

-------------------------- 示例 1 --------------------------

此命令可获取当前会话中所有变量及其值的列表。您可以从任一 Windows PowerShell 驱动器中使用此命令。

get-childitem -path variable:

-------------------------- 示例 2 --------------------------

此命令获取名称以“max”开头的变量。您可以从任一 Windows PowerShell 驱动器中使用此命令。

get-childitem -path variable:max*

如果您位于 Variable: 驱动器中,则可以省略路径中的驱动器名称。

-------------------------- 示例 3 --------------------------

此命令通过在命令行键入 WhatIfPreference 变量来获取其值。

变量名称以美元符号 ($) 开头,以指示其为变量。不指定 Variable: 驱动器名称。

$WhatIfPreference

-------------------------- 示例 4 --------------------------

此命令使用 Get-ChildItem 的 LiteralPath 参数从 Variable: 驱动器中获取“?”变量的值。Get-ChildItem 不会尝试解析 LiteralPath 参数值中的任何通配符。

get-childitem -literalpath ?

若要显示具有特殊字符名称的变量的值,同时不使用 cmdlet,请键入一个美元符号 ($) 以及该变量名称。例如,若要显示变量“?”的值,请键入“$?”。

-------------------------- 示例 5 --------------------------

此命令获取其 Options 属性值为“ReadOnly”或“Constant”的变量。

get-childitem -path variable: | where-object {$_.options -match "Constant" -or $_.options -match "ReadOnly"} | format-list -property name, value, options

创建新变量

-------------------------- 示例 1 --------------------------

此命令创建“services”变量并在该变量中存储 Get-Service 命令的结果。由于当前位置位于 Variable: 驱动器中,因此 Path 参数的值为一个点 (.),该点表示当前位置。

Get-Service 命令两侧的圆括号可确保在创建变量之前执行此命令。如果没有圆括号,则新变量的值将为“Get-Service”字符串。

new-item -path . -name services -value (Get-Service)

如果您不是位于 Variable: 驱动器中,请在路径中包括 Variable: 驱动器名称。

-------------------------- 示例 2 --------------------------

此命令创建“services”变量并在该变量中存储 Get-Service 命令的结果。

此命令使用美元符号 ($) 来指示变量,并使用赋值运算符 (=) 将 Get-Service 命令的结果赋给新创建的变量。

$services = Get-Service

若要创建没有值的变量,请省略赋值运算符。

显示变量的属性和方法

-------------------------- 示例 1 --------------------------

此命令使用 Get-Item cmdlet 来获取所有变量。管道运算符 (|) 将结果发送给 Get-Member cmdlet,后者显示该对象的方法和属性。

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

在通过管道将对象集合(例如 Variable: 驱动器中的变量集合)传递给 Get-Member 时,Get-Member 将分别评估该集合中的每个对象,并返回它发现的有关每个对象类型的信息。 若要获取有关 Variable: 驱动器中的对象集合的信息,请使用 Get-Member 的 InputObject 参数。例如“get-member -inputobject (get-item variable:*)”。使用 InputObject 时,Get-Member 将对集合而不是集合中的对象进行评估。

-------------------------- 示例 2 --------------------------

此命令列出了“home”变量的属性值。此命令使用 Get-Item cmdlet 来获取表示“home”变量的对象。管道运算符 (|) 将结果发送到 Format-List 命令。Format-List 命令将对 Property 参数使用通配符 (*) 来设置“home”变量的所有属性值的格式并显示这些值。

get-item variable:home | format-list -property *

更改变量的属性

-------------------------- 示例 1 --------------------------

此命令使用 Rename-Item cmdlet 将“a”变量的名称更改为“processes”。

rename-item -path variable:a -newname processes

-------------------------- 示例 2 --------------------------

此命令使用 Set-Item cmdlet 将 ErrorActionPreference 变量的值更改为“Stop”。

set-item -path variable:ErrorActionPreference -value Stop

-------------------------- 示例 3 --------------------------

此命令将 ErrorActionPreference 变量的值更改为“Stop”。

此命令使用美元符号 ($) 来指示变量,并使用赋值运算符 (=) 进行赋值。

$ErrorActionPreference = Stop

复制变量

-------------------------- 示例 1 --------------------------

此命令使用 Copy-Item cmdlet 将“processes”变量复制为“old_processes”。这样,将创建一个名为“old_processes”的新变量,该变量的值与“processes”变量的值相同。

copy-item -path variable:processes -destination variable:old_processes

如果从 Variable: 驱动器中发出该命令,则可以省略 Path 参数值中的驱动器名称。

-------------------------- 示例 2 --------------------------

此命令将“processes”变量复制为“old_processes”,而无需使用 cmdlet。此命令使用美元符号 ($) 来指示变量,并使用赋值运算符将 $processes 的值赋予 old_processes。

$old_processes = $processes

删除变量

-------------------------- 示例 1 --------------------------

此命令从当前会话中删除“serv”变量。在任何 Windows PowerShell 驱动器中,都可以使用此命令。

remove-variable -path variable:serv

-------------------------- 示例 2 --------------------------

此命令从当前会话中删除所有变量,但其 Options 属性的值为 Constant 的变量除外。如果不使用 Force 参数,则此命令不删除 Options 属性值为 ReadOnly 的变量。

remove-item variable:* -force

将变量的值设置为 NULL

-------------------------- 示例 1 --------------------------

此命令使用 Clear-Item cmdlet 将“processes”变量的值更改为 NULL。

clear-item -path variable:processes

-------------------------- 示例 2 --------------------------

此命令通过将 null 值赋予“processes”变量来清除该变量的值。此命令使用 $null 自动变量来表示 NULL 值。

$processes = $null

另请参阅

概念

about_Variables
about_Automatic_Variables
about_providers