Invoke-Expression
Выполняет команды или выражения на локальном компьютере.
Синтаксис
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Описание
Командлет Invoke-Expression
вычисляет или запускает указанную строку в качестве команды и возвращает результаты выражения или команды. Без Invoke-Expression
этого строка, отправленная в командной строке, возвращается (эхо) без изменений.
Выражения вычисляются и выполняются в текущей области. Дополнительные сведения см. в about_Scopes.
Внимание
Примите разумные меры предосторожности при использовании командлета Invoke-Expression
в скриптах. При использовании Invoke-Expression
для выполнения команды, введенной пользователем, убедитесь, что команда безопасна для выполнения перед выполнением. Как правило, при создании сценариев лучше предусматривать предварительно определенные варианты входных данных, не допуская ввода данных в свободной форме.
Примеры
Пример 1. Оценка выражения
$Command = "Get-Process"
$Command
Get-Process
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
этого выражение печатается, но не вычисляется.
Первая команда назначает значение Get-Process
переменной $Command
(строка).
Вторая команда демонстрирует результат ввода имени переменной в командной строке. PowerShell отражает строку.
Третья команда используется Invoke-Expression
для вычисления строки.
Пример 2. Запуск скрипта на локальном компьютере
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Эти команды используются Invoke-Expression
для запуска скрипта TestScript.ps1 на локальном компьютере. Команды эквивалентны. Первый использует параметр Command , чтобы указать команду для выполнения.
Второй использует оператор конвейера (|
) для отправки командной строки Invoke-Expression
в .
Пример 3. Выполнение команды в переменной
$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command
В этом примере выполняется командная строка, сохраненная в переменной $Command
.
Командная строка заключена в одинарные кавычки, так как она включает переменную, $_
представляющую текущий объект. Если переменная заключена в двойные кавычки, $_
переменная будет заменена его значением до сохранения в переменной $Command
.
Пример 4. Получение и запуск примера справки командлета
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Эта команда извлекает и запускает первый пример в разделе справки командлета Get-EventLog
.
Чтобы запустить пример другого командлета, измените значение $Cmdlet_name
переменной на имя командлета. И измените $Example_number
переменную на пример номера, который вы хотите запустить. Команда завершается ошибкой, если пример номера недопустим.
Примечание.
Если в примере кода из файла справки есть выходные данные, PowerShell пытается запустить выходные данные вместе с кодом и будет возникать ошибка.
Параметры
-Command
Указывает команду или выражение для выполнения. Введите команду или выражение либо укажите переменную, которая содержит команду или выражение. Обязательный параметр Command .
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, представляющую выражение для вызова этого командлета. Используйте автоматическую $Input
переменную для представления входных объектов в команде.
Объект, представляющий выражение для вызова этого командлета. Используйте автоматическую $Input
переменную для представления входных объектов в команде.
Выходные данные
None
Этот командлет не возвращает собственные выходные данные, но вызываемая команда может возвращать выходные данные.
Примечания
Windows PowerShell включает следующие псевдонимы для Invoke-Expression
:
iex
В большинстве случаев вы вызываете выражения с помощью оператора вызова PowerShell и достигает тех же результатов. Оператор вызова является более безопасным методом. Дополнительные сведения см. в about_Operators.
Связанные ссылки
PowerShell