Variable 提供程序

应用到: Windows PowerShell 4.0

提供程序名称

变量

驱动器

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 保存当前控制台。

功能

ShouldProcess

示例

访问 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

See Also

Other Resources

about_Variables
about_Automatic_Variables
about_Providers