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 以提供 exec 兼容性是其他 POSIX shell。 在正常情况下,cmdlet 不打算在 PowerShell 脚本中使用。
Switch-Process 在 POSIX shell 中没有内置函数的功能奇偶一性 exec ,例如处理文件描述符的方式,但应涵盖大多数情况。