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на локальном компьютере. Две команды эквивалентны. Первый использует параметр команды, чтобы указать команду для выполнения.
Второй использует оператор конвейера (|
) для отправки командной строки в 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
Указывает команду или выражение для выполнения. Введите команду или выражение или введите переменную, содержащую команду или выражение. Требуется параметр команды.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, представляющую выражение для вызова этого командлета. Используйте $Input
автоматическую переменную для представления входных объектов в команде.
Объект, представляющий выражение для вызова этого командлета. Используйте $Input
автоматическую переменную для представления входных объектов в команде.
Выходные данные
None
Этот командлет не возвращает собственные выходные данные, но вызываемая команда может возвращать выходные данные.
Примечания
PowerShell включает следующие псевдонимы для Invoke-Expression
:
- Все платформы:
iex
В большинстве случаев вы вызываете выражения с помощью оператора вызова PowerShell и достигает тех же результатов. Оператор вызова является более безопасным методом. Дополнительные сведения см. в разделе about_Operators.
Связанные ссылки
PowerShell