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


New-Variable

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

Синтаксис

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

Описание

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

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

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

Примеры

Пример 1. Создание переменной

New-Variable days

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

Пример 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

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

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

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

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

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

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

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

Пример 5. Создание частной переменной

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

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

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

Пример 6. Создание переменной с пробелом

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

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

Запрашивает подтверждение перед запуском командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Description

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

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

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

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Name

Задает имя новой переменной.

Тип:String
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Option

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

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

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

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

Тип:ScopedItemOptions
Допустимые значения:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-PassThru

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Scope

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

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

Заметка

Параметр также принимает значение Private. Private не является областью, а необязательным параметром для переменной. Однако использование значения Private с этим командлетом не изменяет видимость переменной. Дополнительные сведения см. в about_Scopes.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Value

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

Тип:Object
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Visibility

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

  • Public — переменная отображается. Public — это значение по умолчанию.
  • Private — переменная не отображается.

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

Тип:SessionStateEntryVisibility
Допустимые значения:Public, Private
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

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

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

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

Object

Можно передать любой объект в New-Variable.

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

None

По умолчанию этот командлет не возвращает выходные данные.

PSVariable

При использовании параметра PassThru этот командлет возвращает объект PSVariable, представляющий новую переменную.

Примечания

PowerShell включает следующие псевдонимы для New-Variable:

  • Все платформы:
    • nv