Задает значение переменной. Если переменная с указанным именем не существует, она создается.
Синтаксис
Set-Variable [-Name] <string[]> [[-Value] <Object>] [-Description <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<CommonParameters>]
Описание
Командлет Set-Variable присваивает значение заданной переменной или изменяет ее текущее значение. Если переменная не существует, командлет создаст ее.
Параметры
-Описание <string>
Задает описание переменной.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Exclude <string[]>
Исключает указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например "*.txt". Подстановочные знаки разрешены.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Force
Позволяет создать новую переменную с именем уже существующей доступной только чтения переменной или изменить значение доступной только для чтения переменной.
По умолчанию переменную можно перезаписать, если у нее нет параметра "ReadOnly" или "Constant". Дополнительные сведения см. в описании параметра Option.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Include <string[]>
Изменяет только указанные элементы. Значение данного параметра определяет значение параметра Name. Введите имя или шаблон имени, например "c*". Подстановочные знаки разрешены.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Name <string[]>
Задает имя переменной.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByPropertyName) |
Принимать подстановочные знаки? |
false |
-Option <ScopedItemOptions>
Изменяет значение свойства Options переменной. Допустимые значения:
-- None: не определяет параметров (по умолчанию используется "None").
-- ReadOnly: свойства переменной изменить нельзя, если только не использовать параметр Force. Для удаления переменной можно использовать командлет Remove-Variable.
-- Constant: переменную нельзя удалить, а ее свойства нельзя изменить. Значение "Constant" доступно только при создании псевдонима. Невозможно изменить на "Constant" значение этого параметра для существующей переменной.
-- Private: переменная доступна только в области, определенной параметром Scope. Она наследуется дочерними областями.
-- AllScope: переменная копируется во все создаваемые области.
Чтобы увидеть свойство переменных Options, введите команду "get-variable| Format-Table -property name, options -autosize".
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-PassThru
Возвращает объект, представляющий новую переменную. По умолчанию этот командлет не формирует никаких выходных данных.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Scope <string>
Определяет область переменной. Допустимые значения: "Global", "Local", "Script" или номер относительно текущей области (от 0 до количества областей, где 0 — текущая область, а 1 — ее родительская область). По умолчанию используется значение "Local". Дополнительные сведения см. в разделе about_Scopes.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Value <Object>
Задает значение переменной.
Обязательно? |
false |
Позиция? |
2 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue, ByPropertyName) |
Принимать подстановочные знаки? |
false |
-Visibility <SessionStateEntryVisibility>
Определяет видимость переменной за пределами области, в которой она была создана. Этот параметр предназначен для использования в скриптах и командах, которые будут предоставляться другим пользователям.
Допустимые значения:
-- Public: переменная видима. ("Public" является значением по умолчанию.)
-- Private: переменная невидима.
Если переменная закрыта (Private), она не появляется в списках переменных, например в списках, возвращаемых командлетом Get-Variable, или при отображении диска Variable:. Выполнение команд чтения или изменения значения частной переменной возвращает ошибку. Но пользователи могут выполнять команды, использующие частные переменные, если эти команды были написаны в сеансах, в которых были определены эти переменные.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
Public |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Confirm
Запрашивает подтверждение перед выполнением команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-WhatIf
Описывает, что произойдет при выполнении команды, без ее фактического выполнения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.Object Объект, представляющий значение переменной, можно передать командлету Set-Variable по конвейеру. |
Выходные данные |
Нет или System.Management.Automation.PSVariable Если задан параметр PassThru, командлет Set-Variable создает объект System.Management.Automation.PSVariable, представляющий новую или измененную переменную. В противном случае этот командлет не формирует никаких выходных данных. |
Пример 1
C:\PS>set-variable -name desc -value "A description" C:\PS>get-variable -name desc Description ----------- Эти команды присваивают переменной "desc" значение "A description" и получают его.
Пример 2
C:\PS>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
C:\PS># set-variable -name counter -visibility private C:\PS> new-variable -name counter -visibility public -value 26 C:\PS> $counter 26 C:\PS> get-variable c* Name Value ---- ----- Culture en-US ConsoleFileName ConfirmPreference High CommandLineParameters {} Counter 26 C:\PS> set-variable -name counter -visibility private C:\PS> get-variable c* Name Value ---- ----- Culture en-US ConsoleFileName ConfirmPreference High CommandLineParameters {} C:\PS> $counter "Cannot access the variable '$counter' because it is a private variable" C:\PS> .\use-counter.ps1 Commands completed successfully. Описание ----------- Эта команда показывает, как изменить видимость переменной на "Private". К переменной могут обращаться и изменять ее скрипты с соответствующими разрешениями, но она не видна пользователю. В примере вывода показано различие в поведении общих и частных переменных.