Set-Variable

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

语法

Set-Variable [-Name] <string[]> [[-Value] <Object>] [-Description <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<CommonParameters>]

说明

Set-Variable cmdlet 为指定变量赋值或更改当前值。如果变量不存在,cmdlet 会创建它。

参数

-Description <string>

指定变量的说明。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Exclude <string[]>

忽略指定项。此参数的值对 Path 参数进行限定。请输入路径元素或模式,例如“*.txt”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Force

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

默认情况下,您可以覆盖某个变量,除非该变量的选项值为“ReadOnly”或“Constant”。有关详细信息,请参阅 Option 参数。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Include <string[]>

只更改指定项。此参数的值对 Name 参数进行限定。输入名称或名称模式,如“c*”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Name <string[]>

指定变量名称。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Option <ScopedItemOptions>

更改变量的 Options 属性的值。有效值包括:

-- None:不设置任何选项。(“None”为默认值。)

-- ReadOnly:除非使用 Force 参数,否则无法更改变量的属性。您可以使用 Remove-Variable 来删除该变量。

-- Constant:无法删除变量,也无法更改其属性。“Constant”仅在您创建别名时才可用。不能将现有变量的选项更改为“Constant”。

-- Private:变量只在 Scope 参数指定的作用域内可用。它由子作用域继承。

-- AllScope:变量将复制到创建的所有新作用域中。

若要查看变量的 Options 属性,请键入“get-variable| Format-Table -property name, options -autosize”。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-PassThru

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

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Scope <string>

确定变量的作用域。有效值包括“Global”、“Local”、“Script”或者相对于当前作用域的数字(0 到作用域数,其中 0 是指当前作用域,1 是指其父作用域)。默认值为“Local”。有关详细信息,请参阅 about_Scopes。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Value <Object>

指定变量的值。

是否为必需?

false

位置?

2

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-Visibility <SessionStateEntryVisibility>

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

有效值包括:

-- Public:变量可见。(“Public”为默认值。)

-- Private:变量不可见。

当变量为专用时,它不会出现在变量列表(如 Get-Variable 返回的变量列表)中,也不会出现在 Variable: 驱动器的显示内容中。读取或更改专用变量值的命令会返回错误。但是,用户可以运行使用专用变量的命令,前提是这些命令是在定义该变量的会话中写入的。

是否为必需?

false

位置?

named

默认值

Public

是否接受管道输入?

false

是否接受通配符?

false

-Confirm

在执行命令之前提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-WhatIf

描述如果执行该命令会发生什么情况(无需实际执行该命令)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.Object

可以通过管道将表示变量值的对象传递给 Set-Variable。

输出

“无”或 System.Management.Automation.PSVariable

如果使用 PassThru 参数,则 Set-Variable 生成一个表示新变量或已更改变量的 System.Management.Automation.PSVariable 对象。否则,此 cmdlet 将不产生任何输出。

示例 1

C:\PS>set-variable -name desc -value "A description"

C:\PS>get-variable -name desc

说明
-----------
这些命令将“desc”变量的值设置为“A description”,然后获取该变量的值。





示例 2

C:\PS>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 的值为 *(全部)的 Property 参数来显示新创建的变量的所有属性。

将值“(Get-Process)”括在圆括号内,以确保先执行该值,然后再将其存储到变量中。否则,变量将包含单词“Get-Process”。





示例 3

C:\PS># set-variable -name counter -visibility private

C:\PS> new-variable -name counter -visibility public -value 26

C:\PS> $counter
26

C:\PS> get-variable c*

Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
Counter 26

C:\PS> set-variable -name counter -visibility private

C:\PS> get-variable c*

Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}

C:\PS> $counter
"Cannot access the variable '$counter' because it is a private variable"

C:\PS> .\use-counter.ps1
Commands completed successfully.

说明
-----------
此命令演示如何将变量的可见性更改为“Private”。可以使用所需权限通过脚本读取和更改此变量,但它对于用户不可见。

示例输出显示了公共变量和专用变量的行为差异。





另请参阅

概念

Get-Variable
New-Variable
Remove-Variable
Clear-Variable