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

Синтаксис

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". К переменной могут обращаться и изменять ее скрипты с соответствующими разрешениями, но она не видна пользователю.

В примере вывода показано различие в поведении общих и частных переменных.






См. также