about_Variable_Provider

提供程序名称

变量

驱动器

Variable:

功能

ShouldProcess

简短说明

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

详细说明

通过 PowerShell Variable 提供程序,你可以获取、添加、更改、清除和删除当前控制台中 PowerShell 变量。

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

Variable 驱动器是一个仅包含变量对象的平面命名空间。 这些变量没有子项。

Variable 提供程序支持以下 cmdlet,本文会进行介绍。

此外,PowerShell 还包括一组专门用于查看和更改变量的 cmdlet。 使用 Variable cmdlet 时,不需要在名称中指定 Variable: 驱动器。 本文不介绍如何使用 Variable cmdlet。

注意

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

此提供程序公开的类型

变量可以是多种不同类型的变量之一。 大多数变量会是 PSVariable 类的实例。 下面列出了其他变量及其所属类型。

  • ? 变量是 QuestionMarkVariable 类的实例。
  • null 变量是 NullVariable 类的实例。
  • 最大计数变量是 SessionStateCapacityVariable 类的实例。
  • LocalVariable 实例包含有关当前执行的信息,例如:
    • MyInvocation
    • PSCommandPath
    • PSScriptRoot
    • PSBoundParameters
    • args
    • input

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

Set-Location Variable:

若要返回到文件系统驱动器,请键入驱动器名称。 例如,键入:

Set-Location C:

还可以从任何其他 Variable 驱动器使用该证书提供程序。 若要从其他位置引用变量,请使用路径中的驱动器名称 Variable:

注意

PowerShell 使用别名来让你熟悉如何使用提供程序路径。 dirls 等命令现在是 Get-ChildItem 的别名,cdSet-Location 的别名。 而 pwdGet-Location 的别名。

显示变量的值

获取当前会话中的所有变量

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

Get-ChildItem -Path Variable:

使用变量的提供程序路径获取变量

此命令使用以美元符号 ($) 为前缀的提供程序路径检索变量值。 这与使用美元符号 ($) 为变量名称添加前缀的效果相同。

$variable:home

使用通配符获取变量

此命令将获取名称以“max”开头的变量。 你可以从任何 PowerShell 驱动器使用此命令。

Get-ChildItem -Path Variable:max*

获取 ? 的值 variable

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

Get-ChildItem -Literalpath ?

Get ReadOnly 和 Constant 变量

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

Get-ChildItem -Path Variable: | Where-Object {
   $_.options -Match "Constant" `
   -or $_.options -Match "ReadOnly"
 } | Format-List -Property name, value, options

创建变量

创建新变量

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

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

New-Item -Path . -Name services -Value (Get-Service)

使用绝对路径创建变量

此命令创建 services 变量,然后将 Get-Service 命令的结果存储在其中。

New-Item -Path Variable:services -Value Get-Service

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

更改变量

重命名变量

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

Rename-Item -Path Variable:a -NewName processes

更改变量的值

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

Set-Item -Path Variable:ErrorActionPreference -Value Stop

复制变量

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

Copy-Item -Path Variable:processes -Destination Variable:old_processes

删除变量

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

Remove-Variable -Path Variable:serv

使用 Force 参数删除变量

此命令将从当前会话中删除所有变量,但其 Options 属性值为 Constant 的变量除外。 在没有 -Force 参数的情况下,该命令将不会删除 Options 属性值为 ReadOnly 的变量。

Remove-Item Variable:* -Force

将变量的值设置为 NULL

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

Clear-Item -Path Variable:processes

使用管道

提供程序 cmdlet 接受管道输入。 可以使用管道将提供程序数据从一个 cmdlet 发送到另一个提供程序 cmdlet 来简化任务。 若要详细了解如何将管道与提供程序 cmdlet 配合使用,请参阅本文中提供的 cmdlet 参考。

获取帮助

从 Windows PowerShell 3.0 开始,你可以获取有关提供程序 cmdlet 的自定义帮助主题,它们介绍了这些 cmdlet 在文件系统驱动器中的行为方式。

若要获取针对文件系统驱动器进行自定义的帮助主题,请在文件系统驱动器中运行 Get-Help 命令,或使用 Get-Help-Path 参数来指定文件系统驱动器。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path variable:

另请参阅