Поделиться через


New-Variable

Создает новую переменную.

Синтаксис

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

Описание

Командлет New-Variable создает новую переменную в Windows PowerShell. Значение для переменной можно назначить при ее создании или изменив созданное значение.

С помощью параметров New-Variable можно задать свойства переменной, задать область переменной и определить, являются ли переменные общедоступными или частными.

Как правило, вы создаете новую переменную, вводя ее имя и ее значение, например $Var = 3, но вы можете использовать New-Variable командлет для использования ее параметров.

Примеры

Пример 1. Create переменной

New-Variable days

Эта команда создает новую переменную с именем days. Вводить параметр Name не требуется.

Пример 2. Create переменной и присвойте ей значение

New-Variable -Name "zipcode" -Value 98033

Эта команда создает переменную с именем zipcode и присваивает ей значение 98033.

Пример 3. Create переменной с параметром 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

В этом примере показано, как использовать ReadOnly параметр для New-Variable защиты переменной от перезаписи.

Первая команда создает переменную с именем Max и устанавливает для нее значение 256. В нем используется параметр Option со значением ReadOnly.

Вторая команда пытается создать вторую переменную с таким же именем. Эта команда возвращает ошибку, поскольку для переменной задан параметр "только для чтения".

Третья команда использует параметр Force для переопределения защиты переменной только для чтения. В этом случае команда создания новой переменной с тем же именем успешно выполняется.

Пример 4. Назначение переменной нескольких параметров

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

В этом примере создается переменная и назначаются AllScope параметры и Constant , чтобы переменная была доступна в текущем область и любых новых созданных областях и не может быть изменена или удалена.

Пример 5. Create частной переменной

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
...

Эта команда демонстрирует поведение частной переменной в модуле. Модуль содержит Get-Counter командлет , который имеет частную переменную с именем Counter. Команда использует параметр Visibility со значением Private для создания переменной.

В примере выходных данных показано поведение частной переменной. Пользователь, загрузивший модуль, не может просматривать или изменять значение переменной Counter, но переменную Counter можно прочитать и изменить с помощью команд в модуле.

Пример 6. Create переменной с пробелом

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

Эта команда демонстрирует возможность создания переменных с пробелами. Доступ к переменным можно получить с помощью командлета Get-Variable или напрямую, разделив переменную фигурными скобками.

Параметры

-Confirm

Запрос подтверждения перед выполнением командлета.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Указывает описание переменной.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Указывает, что командлет создает переменную с тем же именем, что и существующая переменная, доступная только для чтения.

По умолчанию переменную можно перезаписать, если только переменная не имеет значения ReadOnly параметра или Constant. Дополнительные сведения см. в параметре Option .

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Указывает имя новой переменной.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Option

Задает значение свойства Options переменной. Допустимые значения для этого параметра:

  • None — не задает параметров. Значение по умолчанию — None.
  • ReadOnly — Может быть удален. Нельзя изменить, за исключением использования параметра Force .
  • Private— переменная доступна только в текущем область.
  • AllScope — переменная копируется во все новые области, которые создаются.
  • Constant — невозможно удалить или изменить. Constant является допустимым только при создании переменной. Нельзя изменить параметры существующей переменной на Constant.

Эти значения определяются как перечисление на основе флагов. С помощью этого параметра можно объединить несколько значений, чтобы задать несколько флагов. Значения могут передаваться в параметр Option в виде массива значений или в виде строки этих значений, разделенной запятыми. Командлет объединит значения с помощью операции binary-OR. Передача значений в виде массива является самым простым вариантом, а также позволяет использовать для значений заполнение табуляции.

Чтобы просмотреть свойство Options всех переменных в сеансе, введите Get-Variable | Format-Table -Property name, options -AutoSize.

Type:ScopedItemOptions
Accepted values:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Возвращает объект, представляющий элемент, с которым вы работаете. По умолчанию этот командлет не создает выходные данные.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Задает область новой переменной. Допустимые значения для этого параметра:

  • Global— Переменные, созданные в глобальной область, доступны везде в процессе PowerShell.
  • Local— Локальный область относится к текущему область, это может быть любой область в зависимости от контекста.
  • Script— Переменные, созданные в область скрипта, доступны только в файле скрипта или модуле, в которых они созданы.
  • Private— Переменные, созданные в частном область, не могут быть доступны за пределами область, в которых они существуют. Вы можете использовать частные область, чтобы создать закрытую версию элемента с тем же именем в другом область.
  • Число относительно текущего область (от 0 до количества областей, где 0 — это текущий область, 1 — родительский элемент, 2 — родительский элемент родительского область и т. д.). Отрицательные числа нельзя использовать.

Localявляется область по умолчанию, если параметр область не указан.

Дополнительные сведения см. в разделе about_Scopes.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Value

Указывает первоначальное значение переменной.

Type:Object
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Visibility

Определяет, видима ли переменная вне сеанса, в котором она была создана. Этот параметр предназначен для использования в скриптах и командах, которые будут доставляться другим пользователям. Допустимые значения для этого параметра:

  • Public — переменная видна. Значение по умолчанию — Public.
  • Private — переменная не видна.

Если переменная является частной, она не отображается в списках переменных, таких как те, которые возвращаются Get-Variable, или в дисплеях Variable: диска. Команды чтения или изменения значения частной переменной возвращают ошибку. Однако пользователь может выполнять команды, использующие частную переменную, если они были написаны в сеансе, в котором определена переменная.

Type:SessionStateEntryVisibility
Accepted values:Public, Private
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

Object

Значение можно передать в New-Variable.

Выходные данные

None or System.Management.Automation.PSVariable

При использовании параметра PassThru создает объект System.Management.Automation.PSVariable, New-Variable представляющий новую переменную. В противном случае командлет не формирует никаких выходных данных.