Выполняет команды или выражения на локальном компьютере.

Синтаксис

Invoke-Expression [-Command] <string> [<CommonParameters>]

Описание

Командлет Invoke-Expression обрабатывает или выполняет заданную строку в качестве команды и возвращает результаты выражения или команды. Без командлета Invoke-Expression строка, переданная в командную строку, будет возвращена без изменений.

Параметры

-Command <string>

Задает команду или выражение для выполнения. Введите команду или выражение или введите переменную, которая содержит команду или выражение. Параметр Command является обязательным.

Обязательно?

true

Позиция?

1

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

Принимать входные данные из конвейера?

true (ByValue)

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

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

System.String или PSObject

Объект, представляющий команду, можно передать командлету Invoke-Expression с помощью конвейера. Для представления входных объектов команды следует использовать автоматическую переменную $input.

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

PSObject

Возвращает результат, созданный вызванной командой (значением параметра Command).

Примечания

-- Выражение является инструкцией, которую можно обработать, чтобы получить результат, например командой Windows PowerShell.

-- При использовании командлета Invoke-Expression в скриптах необходимо принять соответствующие меры предосторожности. Если с помощью командлета Invoke-Expression выполняется команда, параметры которой задает пользователь, следует предварительно убедиться, что команда безопасна. В общем случае рекомендуется задавать параметры команд на этапе разработки скрипта, а не разрешать ввод этих параметров в свободной форме.

Пример 1

C:\PS>$command = "Get-Process"

C:\PS> $command
Get-Process


C:\PS> invoke-expression $command

Handles  NPM(K)	PM(K)	WS(K) VM(M)   CPU(s)	 Id ProcessName
-------  ------	-----	----- -----   ------	 -- -----------
	296	 4	 1572	 1956	20	 0.53   1348 AdtAgent
	270	 6	 1328		800	34	 0.06   2396 alg
	 67	 2	620		484	20	 0.22	716 ati2evxx
   1060	15	12904	11840	74	11.48	892 CcmExec
   1400	33	25280	37544   223	38.44   2564 communicator
...

Описание
-----------
В этом примере показано использование командлета Invoke-Expression для вычисления выражения. Без указания Invoke-Expression выражение выводится на экран, но не обрабатывается.

Первая команда присваивает переменной $command значение "Get-Process" (строка). 

Вторая команда показывает результат ввода в командной строке имени переменной. Windows PowerShell повторяет эту строку в выводе.

Третья команда использует командлет Invoke-Expression для обработки строки.






Пример 2

C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1"

C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression

Описание
-----------
Эти команды используют Invoke-Expression для запуска на локальном компьютере скрипта TestScript.ps1. Две приведенные команды эквивалентны. Первая использует параметр Command для задания команды для выполнения. Во второй команде для передачи командлету Invoke-Expression командной строки используется оператор конвейера (|).






Пример 3

C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}'

C:\PS> iex $command

Описание
-----------
В этом примере выполняется командная строка, сохраненная в переменной $cmd. 

Командная строка заключена в одиночные кавычки, поскольку она включает переменную $_, представляющую текущий объект. Если бы она была заключена в двойные кавычки, перед сохранением команды в строке $command переменная $_ была бы заменена значением.






Пример 4

C:\PS>$cmdlet_name = "get-eventlog"

C:\PS> $example_number = 1

C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code

C:\PS> invoke-expression $example_code

Описание
-----------
Эта команда извлекает и выполняет первый пример в разделе справки, посвященном командлету Get-EventLog. 

Чтобы выполнить пример другого командлета, присвойте переменной $cmdlet_name имя командлета. Затем присвойте переменной $example_number номер примера, который требуется выполнить. Если примера с указанным номером не существует, выполнение команды завершится сбоем.






См. также