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 函数对等的功能(例如文件描述符的处理方式),但应当涵盖大多数情况。