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


Switch-Process

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

Синтаксис

Default (по умолчанию)

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

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:0
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

String

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

Object

Примечания

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