Switch-Process
В Linux и macOS командлет вызывает execv()
функцию, чтобы обеспечить аналогичное поведение, как оболочки POSIX.
Синтаксис
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
Описание
Некоторые собственные команды UNIX создают промежуточную оболочку для запуска каких-то процессов (например, SSH) и используют встроенную bash
-команду exec
для порождения нового процесса, заменяющего текущий. По умолчанию exec
не является допустимой командой в PowerShell. Это затрагивает некоторые известные сценарии, например copy-ssh-id
, и некоторые подкоманды AzCLI.
Командлет Switch-Process
вызывает собственную execv()
функцию, чтобы обеспечить аналогичное поведение, как оболочки POSIX. Этот командлет и его псевдоним exec
добавлены в PowerShell 7.3.0.
PowerShell 7.3.1 изменил exec
псевдоним на функцию, которая выполняет оболочку Switch-Process
. Функция позволяет передавать параметры в собственную команду, которая, возможно, ошибочно привязана к параметру WithCommand .
Командлет доступен только для систем, отличных от Windows.
Примеры
Пример 1. Выполнение команды, зависящую от exec.
В этом примере предполагается, что PowerShell — это оболочка по умолчанию в системе, отличной от Windows. ssh-copy-id
— это популярный скрипт bash для развертывания открытых ключей на целевых компьютерах для проверки подлинности на основе ключей. Скрипт зависит от команды Bash. exec
ssh-copy-id user@host
PSExec
После включения ssh-copy-id
функции скрипт завершается успешно.
Параметры
-WithCommand
Указывает собственный исполняемый файл (и все параметры), которые необходимо запустить. Все дополнительные значения, передаваемые в качестве аргументов, передаются в виде массива строк, выполняемых с помощью первой команды.
Целевая команда должна быть собственным исполняемым файлом, а не командой PowerShell.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
String[]
Выходные данные
Примечания
Командлет Switch-Process
создан для обеспечения exec
совместимости — это другие оболочки POSIX. В обычных условиях командлет не предназначен для использования в сценариях PowerShell. Switch-Process
Не имеет четности функций со встроенной exec
функцией в оболочках POSIX, таких как обработка дескрипторов файлов, но в большинстве случаев должна охватывать большинство случаев.
PowerShell