New-Variable
创建新变量
语法
New-Variable [-Name] <string> [[-Value] <Object>] [-Description <string>] [-Force] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<CommonParameters>]
说明
New-Variable cmdlet 在 Windows PowerShell 中创建新变量。可以在创建该变量时向其赋值,也可以在创建该变量后向其赋值或更改值。
可以使用 New-Variable 的参数来设置变量的属性(如那些创建只读或常量变量的属性),设置变量的作用域以及确定变量是公共的还是专用的。
通常,通过键入变量名称及其值来创建新变量(如“$var = 3”),但可以使用 New-Variable cmdlet 来使用它的参数。
参数
-Description <string>
指定变量的说明。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Force
允许您创建名称与现有只读变量相同的新变量。
默认情况下,可以覆盖某个变量,除非该变量的选项值为“ReadOnly”或“Constant”。有关详细信息,请参阅 Option 参数。
是否为必需? |
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 参数指定的作用域内可用。它由子作用域继承。(此值与 Visibility 参数的“Private”值无关。)
-- 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 可以将值通过管道传递给 New-Variable。 |
输出 |
“无”或 System.Management.Automation.PSVariable 如果使用 PassThru 参数,则 New-Variable 生成一个表示新变量的 System.Management.Automation.PSVariable 对象。否则,此 cmdlet 将不产生任何输出。 |
示例 1
C:\PS>new-variable days
说明
-----------
此命令创建名为“days”的新变量。执行该命令后此变量不会立即有值。
示例 2
C:\PS>new-variable zipcode -value 98033
说明
-----------
此命令创建名为“zipcode”的变量,并为其赋值“98033”。
示例 3
C:\PS>new-variable -name max -value 256 -option readonly
new-variable -name max -value 1024
new-variable -name max -value 1024 -force
C:\PS> new-variable -name max -value 256 -option readonly
C:\PS> new-variable -name max -value 1024
New-Variable : A variable with name 'max' already exists.
At line:1 char:13
+ new-variable <<<< -name max -value 1024
C:\PS> new-variable -name max -value 1024 -force
说明
-----------
此示例演示了如何使用 New-Variable 的 ReadOnly 选项保护变量免于被覆盖。
第一个命令创建名为 Max 的新变量,并为其赋值“256”。它使用值为 ReadOnly 的 Option 参数。
第二个命令尝试创建具有相同名称的另一个变量。此命令将返回错误,因为对该变量设置了只读选项。
第三个命令使用 Force 参数覆盖该变量上的只读保护。在此例中,创建具有相同名称的新变量的命令运行成功。
示例 4
C:\PS>new-variable -name counter -visibility private
#Effect of private variable in a module.
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> Get-Counter
Name Value
---- -----
Counter1 3.1415
...
说明
-----------
此命令演示了模块中专用变量的行为。该模块包含 Get-Counter cmdlet,该 cmdlet 有一个名为“Counter”的专用变量。该命令使用值为“Private”的 Visibility 参数来创建变量。
示例输出显示了专用变量的行为。加载了该模块的用户无法查看或更改 Counter 变量的值,但可以通过该模块中的命令读取和更改 Counter 变量。