当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] New-Variable (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:04:59 浏览:15 分类:玩电脑

New-Variable (Microsoft.PowerShell.Utility)


New-Variable

模块 :Microsoft.PowerShell.Utility

创建一个新变量。

句法

New-Variable
   [-Name] <String>
   [[-Value] <Object>]
   [-Description <String>]
   [-Option <ScopedItemOptions>]
   [-Visibility <SessionStateEntryVisibility>]
   [-Force]
   [-PassThru]
   [-Scope <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

描述

New-Variable cmdlet 在 PowerShell 中创建一个新变量。您可以在创建变量时为其赋值,也可以在创建后赋值或更改该值。

您可以使用New-Variable的参数来设置变量的属性、设置变量的范围以及确定变量是公共的还是私有的。

通常,您可以通过键入变量名称及其值(例如 $Var=3)来创建新变量,但您可以使用 New-Variable cmdlet 来使用其参数。

示例

示例 1:创建变量

New-Variable days

此命令创建一个名为 days 的新变量。您无需键入名称参数。

示例 2:创建变量并为其赋值

New-Variable -Name "zipcode" -Value 98033

此命令创建一个名为 zipcode 的变量并为其分配值 98033。

示例 3:使用 ReadOnly 选项创建变量

PS C:\> New-Variable -Name Max -Value 256 -Option ReadOnly
PS C:\> New-Variable -Name max -Value 1024

New-Variable : A variable with name 'max' already exists.
At line:1 char:1
+ New-Variable -Name max -Value 1024
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceExists: (max:String) [New-Variable], SessionStateException
    + FullyQualifiedErrorId : VariableAlreadyExists,Microsoft.PowerShell.Commands.NewVariableCommand

PS C:\> New-Variable -Name max -Value 1024 -Force

此示例演示如何使用 New-VariableReadOnly 选项来保护变量不被覆盖。

第一个命令创建一个名为 Max 的新变量,并将其值设置为 256。它使用值为 ReadOnlyOption 参数。

第二个命令尝试创建第二个同名变量。此命令返回错误,因为变量上设置了只读选项。

第三个命令使用Force参数来覆盖变量的只读保护。在这种情况下,创建同名新变量的命令会成功。

示例 4:将多个选项分配给一个变量

New-Variable -Name 'TestVariable' -Value 'Test Value' -Option AllScope,Constant

此示例创建一个变量并分配 AllScopeConstant 选项,以便该变量在当前作用域和创建的任何新作用域中可用,并且无法更改或删除。

示例 5:创建私有变量

此命令演示了模块中私有变量的行为。该模块包含 Get-Counter cmdlet,其中有一个名为 Counter 的私有变量。该命令使用值为 Private 的 Visibility 参数来创建变量。

PS C:\> New-Variable -Name counter -Visibility Private

#Effect of private variable in a module.

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"
At line:1 char:1
+ $counter
+ ~~~~~~~~
    + CategoryInfo          : PermissionDenied: (counter:String) [], SessionStateException
    + FullyQualifiedErrorId : VariableIsPrivate

PS C:\> Get-Counter
Name         Value
----         -----
Counter1     3.1415
...

示例输出显示了私有变量的行为。加载模块的用户无法查看或更改Counter变量的值,但可以通过模块中的命令读取和更改Counter变量。

示例 6:创建一个带有空格的变量

此示例演示可以创建带空格的变量。可以使用 Get-Variable cmdlet 或直接用大括号分隔变量来访问变量。

PS C:\> New-Variable -Name 'with space' -Value 'abc123xyz'

PS C:\> Get-Variable -Name 'with space'

Name                           Value
----                           -----
with space                     abc123xyz

PS C:\> ${with space}
abc123xyz

参数

-Confirm

在运行 cmdlet 之前提示您进行确认。

类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Description

指定变量的描述。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Force

指示 cmdlet 创建一个与现有只读变量同名的变量。

默认情况下,您可以覆盖变量,除非该变量具有 ReadOnlyConstant 选项值。有关详细信息,请参阅选项参数。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Name

指定新变量的名称。

类型 :

String

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Option

指定变量的选项属性的值。该参数可接受的值为:

  • None - 不设置任何选项。 是默认值。
  • 只读 - 可以删除。无法更改,除非使用Force 参数。
  • Private - 该变量仅在当前范围内可用。
  • AllScope - 变量被复制到创建的任何新范围。
  • 常量 - 无法删除或更改。 Constant 仅在创建变量时才有效。您无法将现有变量的选项更改为常量

这些值被定义为基于标志的枚举。您可以使用此参数将多个值组合在一起以设置多个标志。这些值可以作为值数组或这些值的逗号分隔字符串传递给 Option 参数。该 cmdlet 将使用二进制 OR 运算组合这些值。将值作为数组传递是最简单的选项,并且还允许您对值使用制表符补全。

要查看会话中所有变量的选项属性,请键入 Get-Variable |格式表-属性名称,选项-AutoSize。

类型 :

范围项选项

接受的值:

无、只读、常量、私有、所有范围、未指定

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-PassThru

返回一个代表您正在使用的项目的对象。默认情况下,此 cmdlet 不生成任何输出。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Scope

指定新变量的范围。该参数可接受的值为:

  • 全局 - 在全局范围内创建的变量可以在 PowerShell 进程中的任何位置访问。
  • Local - 本地作用域是指当前作用域,这可以是任何作用域,具体取决于上下文。当没有指定scope参数时,Local是默认范围。
  • 脚本 - 在脚本范围内创建的变量只能在创建它们的脚本文件或模块内访问。
  • 相对于当前作用域的数字(0 到作用域数量,其中 0 是当前作用域,1 是其父作用域,2 是父作用域的父作用域,依此类推)。不能使用负数。

笔记

该参数还接受 Private 值。 Private 实际上不是作用域,而是变量的可选设置。但是,将此 cmdlet 与 Private 值结合使用不会更改变量的可见性。有关详细信息,请参阅 about_Scopes。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Value

指定变量的初始值。

类型 :

目的

位置:

1

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Visibility

确定变量在创建它的会话外部是否可见。此参数设计用于在将交付给其他用户的脚本和命令中使用。该参数可接受的值为:

  • Public - 变量可见。 Public 是默认设置。
  • Private - 变量不可见。

当变量是私有变量时,它不会出现在变量列表中,例如 Get-Variable 返回的变量列表,也不会出现在 Variable: 驱动器的显示中。读取或更改私有变量值的命令会返回错误。但是,如果命令是在定义变量的会话中编写的,则用户可以运行使用私有变量的命令。

类型 :

会话状态条目可见性

接受的值:

公共、私人

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-WhatIf

显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

对象

您可以通过管道将任何对象传递给New-Variable

输出

默认情况下,此 cmdlet 不返回任何输出。

PS变量

当您使用 PassThru 参数时,此 cmdlet 将返回表示新变量的 PSVariable 对象。

笔记

PowerShell 包含以下 New-Variable 别名:

  • 所有平台:

      nv

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯