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, например, как в случае с обработкой дескрипторов файлов, но должен охватывать большинство случаев.