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, например способ обработки дескрипторов файлов, но должен охватывать большинство случаев.