Поделиться через


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[]

Выходные данные

Object

Примечания

Командлет Switch-Process создан для обеспечения exec совместимости — это другие оболочки POSIX. В обычных условиях командлет не предназначен для использования в сценариях PowerShell. Switch-Process Не имеет четности функций со встроенной exec функцией в оболочках POSIX, таких как обработка дескрипторов файлов, но в большинстве случаев должна охватывать большинство случаев.