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


Switch-Process

В Linux и macOS командлет вызывает функцию execv() для обеспечения аналогичного поведения, как оболочки POSIX.

Синтаксис

Switch-Process
      [[-WithCommand] <String[]>]
      [<CommonParameters>]

Описание

Некоторые собственные команды Unix запускают что-то (например, ssh) и используют встроенную команду bashexec для создания нового процесса, заменяющего текущий. По умолчанию 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, например способ обработки дескрипторов файлов, но должен охватывать большинство случаев.