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.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
String[]
Выходные данные
Примечания
Командлет Switch-Process
был создан для обеспечения exec
совместимости с другими оболочками POSIX. В обычных условиях командлет не предназначен для использования в сценариях PowerShell. Switch-Process
не имеет четности функций со встроенной функцией в exec
оболочках POSIX, например, как обработка дескрипторов файлов, но должна охватывать большинство случаев.