Set-Variable
设置变量的值。 如果不存在具有请求名称的变量,则创建该变量。
语法
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:设置变量并获取其值
PS C:\> Set-Variable -Name "desc" -Value "A description"
PS C:\> Get-Variable -Name "desc"
这些命令将 desc 变量的值设置为 A 说明,然后获取变量的值。
示例 2:设置全局只读变量
PS C:\> 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 的值为 all = 以显示新创建的变量的所有属性。
值“(Get-Process)”括在括号中,以确保在变量中存储之前执行该值。 否则,该变量包含单词“Get-Process”。
示例 3:了解公共变量与私有变量
PS C:\> New-Variable -Name "counter" -Visibility Public -Value 26
PS C:\> $Counter
26
PS C:\> Get-Variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
Counter 26
PS C:\> Set-Variable -Name "counter" -Visibility Private
PS C:\> Get-Variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
PS C:\> $counter
"Cannot access the variable '$counter' because it is a private variable"
PS C:\> .\use-counter.ps1
#Commands completed successfully.
此命令演示如何将变量的可见性更改为 Private。 此变量可由具有所需权限的脚本读取和更改,但对用户不可见。
示例输出显示了公共变量和私有变量行为的差异。
参数
-Confirm
在运行 cmdlet 之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Description
指定变量的说明。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Exclude
指定此 cmdlet 从操作中排除的项数组。
此参数的值限定 Path 参数。
输入路径元素或模式,例如 *.txt
。
允许通配符。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Force
允许创建与现有只读变量同名的变量,或更改只读变量的值。
默认情况下,可以覆盖变量,除非变量具有 ReadOnly 或 Constant 的选项值。 有关详细信息,请参阅 Option 参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Include
指定此 cmdlet 包含在操作中的项数组。
此参数的值限定 Name 参数。
输入名称或名称模式,例如 c*
。
允许通配符。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Name
指定变量名称。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Option
指定变量的 Options 属性的值。
有效值为:
- 无:不设置任何选项。 (“无”是默认值。
- ReadOnly:可以删除。 不能更改,除非使用 Force 参数。
- 常量:无法删除或更改。 只有在创建变量时,“常量”才有效。 不能将现有变量的选项更改为“Constant”。
- 专用:该变量仅在当前范围内可用。
- AllScope:变量将复制到创建的任何新作用域。
若要查看会话中所有变量的 Options 属性,请键入 Get-Variable | Format-Table -Property name, options -Autosize
。
类型: | ScopedItemOptions |
接受的值: | None, ReadOnly, Constant, Private, AllScope, Unspecified |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PassThru
返回一个表示新变量的对象。 默认情况下,此 cmdlet 不生成任何输出。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Scope
指定变量的范围。此参数的可接受值为:
- 全球
- 当地
- 脚本
- 私人
- 相对于当前范围的数字(0 到范围的数目,其中 0 是当前范围,1 是它的父范围)。
本地为默认值。
有关详细信息,请参阅 about_Scopes。
类型: | String |
Position: | Named |
默认值: | Local |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Value
指定变量的值。
类型: | Object |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Visibility
确定变量是否在创建变量的会话之外可见。 此参数旨在用于将传递给其他用户的脚本和命令。
有效值为:
- 公共:该变量可见。 (“公共”为默认值)。
- 私有:变量不可见。
当变量是私有变量时,它不会出现在变量列表中,例如 Get-Variable 返回的变量或变量: 驱动器的显示中。 用于读取或更改私有变量值的命令返回错误。 但是,如果用户在定义变量的会话中写入了命令,则可以运行使用私有变量的命令。
类型: | SessionStateEntryVisibility |
接受的值: | Public, Private |
Position: | Named |
默认值: | Public |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道传递一个对象,该对象表示变量的值以 Set-Variable。
输出
None or System.Management.Automation.PSVariable
使用 PassThru 参数时,Set-Variable 生成表示新变量或更改的 System.Management.Automation.PSVariable 对象。 否则,此 cmdlet 不会生成任何输出。