Switch-Process
在 Linux 和 macOS 上,cmdlet 调用 execv()
函数以提供与 POSIX shell 类似的行为。
语法
Default (默认值)
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[] |
默认值: | None |
支持通配符: | False |
不显示: | False |
参数集
(All)
Position: | 0 |
必需: | False |
来自管道的值: | False |
来自管道的值(按属性名称): | False |
来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
String
输出
Object
备注
创建 Switch-Process
cmdlet 是为了在其他 POSIX shell 中提供 exec
兼容性。 在正常情况下,cmdlet 不打算在 PowerShell 脚本中使用。
Switch-Process
没有与 POSIX shell 中的内置 exec
函数对等的功能(例如文件描述符的处理方式),但应当涵盖大多数情况。