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


Set-Variable

Задает значение переменной. Создает переменную, если переменной с запрошенным именем не существует.

Синтаксис

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

Описание

Командлет Set-Variable присваивает значение указанной переменной или изменяет текущее значение. Если переменная не существует, командлет создает ее.

Примеры

Пример 1. Установка переменной и получение ее значения

Эти команды устанавливают для переменной $descA descriptionзначение , а затем получает значение переменной.

Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"

Name                           Value
----                           -----
desc                           A description

Пример 2. Установка глобальной переменной только для чтения

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

Set-Variable -Name "processes" -Value (Get-Process) -Option constant -Scope global -Description "All processes" -PassThru |
    Format-List -Property *

Команда использует Set-Variable командлет для создания переменной. Он использует параметр PassThru для создания объекта, представляющего новую переменную, и оператор конвейера (|) для передачи объекта командлету Format-List . Он использует параметр Format-ListProperty со значением all (*) для отображения всех свойств созданной переменной.

Значение (Get-Process), заключено в круглые скобки, чтобы убедиться, что оно выполняется перед сохранением в переменной. В противном случае переменная содержит слова Get-Process.

Пример 3. Общие сведения об общедоступных и частных переменных

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

New-Variable -Name "counter" -Visibility Public -Value 26
$Counter

26

Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26

Set-Variable -Name "counter" -Visibility Private
Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}

$counter

"Cannot access the variable '$counter' because it is a private variable"

.\use-counter.ps1
#Commands completed successfully.

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

Параметры

-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

-Exclude

Указывает массив элементов, которые этот командлет исключает из операции. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использовать подстановочные знаки.

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

-Force

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

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

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

-Include

Указывает массив элементов, которые этот командлет включает в операцию. Значение этого параметра квалифифициирует параметр Name . Введите имя или шаблон имени, например c*. Разрешено использовать подстановочные знаки.

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

-Name

Определяет имя переменной.

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

-Option

Задает значение свойства Options переменной.

Допустимые значения:

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

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

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:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

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

  • Global
  • Local
  • Script
  • Private
  • Число относительно текущего область (от 0 до числа областей, где 0 — текущий область а 1 — родительский элемент).

Значение по умолчанию — Local.

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

Type:String
Position:Named
Default value:Local
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:Public
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

Объект, представляющий значение переменной, можно передать по конвейеру в Set-Variable.

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

None or System.Management.Automation.PSVariable

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