Set-Variable

设置变量的值。 如果不存在具有请求名称的变量,则创建该变量。

语法

Default (默认值)

Set-Variable
    [-Name] <String[]>
    [[-Value] <Object>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-Description <String>]
    [-Option <ScopedItemOptions>]
    [-Force]
    [-Visibility <SessionStateEntryVisibility>]
    [-PassThru]
    [-Scope <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

Set-Variable cmdlet 将值分配给指定的变量或更改当前值。 如果该变量不存在,则 cmdlet 会创建它。

示例

示例 1:设置变量并获取其值

这些命令将 $desc 变量的值设置为 A description,然后获取变量的值。

Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"
Name                           Value
----                           -----
desc                           A description

示例 2:设置全局只读变量

此示例创建一个全局只读变量,其中包含系统上的所有进程,然后显示该变量的所有属性。

Set-Variable -Name "processes" -Value (Get-Process) -Option Constant -Scope Global -Description "All processes" -PassThru |
    Format-List -Property *

该命令使用 Set-Variable cmdlet 创建变量。 它使用 PassThru 参数创建表示新变量的对象,并使用管道运算符(|)将对象传递给 Format-List cmdlet。 它使用具有所有值()的 Format-List* 参数来显示新创建的变量的所有属性。

(Get-Process)括在括号中,以确保在变量中存储之前执行该值。 否则,变量包含单词 Get-Process

示例 3:了解公共变量与私有变量

此示例演示如何将变量的可见性更改为 Private。 此变量可由具有所需权限的脚本读取和更改,但对用户不可见。

New-Variable -Name "counter" -Visibility Public -Value 26
$Counter
26
Get-Variable c*
Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26
Set-Variable -Name "counter" -Visibility Private
Get-Variable c*
Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
$counter
"Cannot access the variable '$counter' because it is a private variable"
.\use-counter.ps1
#Commands completed successfully.

此命令演示如何将变量的可见性更改为 Private。 此变量可由具有所需权限的脚本读取和更改,但对用户不可见。

参数

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Description

指定对变量的描述。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Exclude

指定此 cmdlet 从操作中排除的项数组。 此参数的值定义了 Path 参数的限定条件。 输入路径元素或模式,例如 *.txt。 允许使用通配符。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

允许创建与现有只读变量同名的变量,或更改只读变量的值。

默认情况下,可以覆盖变量,除非变量具有选项值 ReadOnlyConstant。 有关详细信息,请参阅 Option 参数。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Include

指定此 cmdlet 将在操作中包含的项数组。 此参数的值用于限定 Name 参数。 输入名称或名称模式,例如 c*。 允许使用通配符。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Name

指定变量名称。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Option

指定变量的 Options 属性的值。

有效值为:

  • None:不设置任何选项。 (None 为默认值。
  • ReadOnly:可以删除。 不能更改,除非使用 Force 参数。
  • Constant:无法删除或更改。 只有在创建变量时,Constant 才有效。 不能将现有变量的选项更改为 Constant
  • Private:变量仅在当前范围内可用。
  • AllScope:变量将复制到创建的任何新作用域。

这些值被定义为以标志为基础的枚举。 可以使用此参数将多个值组合在一起以设置多个标志。 可以将值作为值数组或这些值的逗号分隔字符串传递给 Option 参数。 该 cmdlet 将使用二进制 OR作合并这些值。 将值作为数组传递是最简单的选项,还允许对值使用 Tab 补全。

参数属性

类型:ScopedItemOptions
默认值:None
接受的值:None, ReadOnly, Constant, Private, AllScope, Unspecified
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PassThru

返回一个表示新变量的对象。 默认情况下,此 cmdlet 不生成任何输出。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Scope

指定变量的范围。此参数的可接受值为:

  • Global
  • Local
  • Script
  • Private
  • 相对于当前范围的数字(0 到范围的数目,其中 0 是当前范围,1 是它的父范围)。

Local 是默认值。

有关详细信息,请参阅 about_Scopes

参数属性

类型:String
默认值:Local
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Value

指定变量的值。

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:1
必需:False
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Visibility

确定变量是否在创建变量的会话之外可见。 此参数旨在用于将传递给其他用户的脚本和命令。

有效值为:

  • Public:变量可见。 (Public 为默认值。
  • Private:变量不可见。

当变量是私有的,它不会出现在变量列表中,例如由 Get-Variable返回的变量,也不会显示在 变量的显示中: 驱动器。 用于读取或更改私有变量值的命令返回错误。 但是,如果用户在定义变量的会话中写入了命令,则可以运行使用私有变量的命令。

参数属性

类型:SessionStateEntryVisibility
默认值:Public
接受的值:Public, Private
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

Object

可以通过管道将表示变量的值的对象传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

PSVariable

使用 PassThru 参数时,此 cmdlet 将返回表示新变量或更改的 PSVariable 对象。

备注

PowerShell 包含以下与 Set-Variable相关的别名:

  • 所有平台:
    • set
    • sv