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


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. Установка переменной и получение его значения

Эти команды задают значение переменной $desc A 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-List Property со значением всех (*) для отображения всех свойств только что созданной переменной.

Значение, (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.

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

Параметры

-Confirm

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

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

-Description

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

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

-Exclude

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

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

-Force

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

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

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

-Include

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

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

-Name

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

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

-Option

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

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

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

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

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

-PassThru

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

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

-Scope

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

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

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

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

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

-Value

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

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

-Visibility

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

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

  • Public: переменная видна. (Public используется по умолчанию.)
  • Private: переменная не видна.

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

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

-WhatIf

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

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

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

Object

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

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

None

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

PSVariable

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

Примечания

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

  • set
  • sv