Switch-Process
在 Linux 和 macOS 上,cmdlet 调用 execv()
函数以提供与 POSIX shell 类似的行为。
语法
Switch-Process
[[-WithCommand] <String[]>]
[<CommonParameters>]
说明
某些本机 Unix 命令会启动运行某些内容(如 ssh),并使用 bash
内置命令 exec
生成替换当前进程的新进程。 默认情况下,exec
不是 PowerShell 中的有效命令。 这会影响一些已知的脚本,例如 copy-ssh-id
和 AzCLI 的一些子命令。
Switch-Process
cmdlet 调用本机 execv()
函数,以提供与 POSIX shell 类似的行为。 此 cmdlet 及其别名 exec
已添加到 PowerShell 7.3.0 中。
PowerShell 7.3.1 将 exec
别名更改为包装 Switch-Process
的函数。 该函数允许将参数传递给本机命令,该命令可能错误地绑定到 WithCommand 参数。
此 cmdlet 仅适用于非 Windows 系统。
示例
示例 1 - 执行依赖于“exec”的命令
此示例假定 PowerShell 是非 Windows 系统上的默认 shell。
ssh-copy-id
是一种常用的 bash 脚本,用于在目标计算机上部署公钥,以便进行基于密钥的身份验证。 脚本取决于 bash 命令,exec
。
ssh-copy-id user@host
启用 PSExec
功能后,ssh-copy-id
脚本成功。
参数
-WithCommand
指定要运行的本机可执行文件(和任何参数)。 作为参数传递的所有附加值都作为要用第一个命令执行的字符串数组传递。
目标命令必须是本机可执行文件,而不是 PowerShell 命令。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
String[]
输出
备注
创建 Switch-Process
cmdlet 以提供 exec
兼容性是其他 POSIX shell。 在正常情况下,cmdlet 不打算在 PowerShell 脚本中使用。
Switch-Process
在 POSIX shell 中没有内置 exec
函数的功能奇偶校验,例如文件描述符的处理方式,但应涵盖大多数情况。