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


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

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

Object

Примечания

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