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”。可以使用所需权限通过脚本读取和更改此变量,但它对于用户不可见。
示例输出显示了公共变量和专用变量的行为差异。