创建新变量

语法

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。

输出

None 或 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 变量。






另请参阅




目录