当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Switch-Process (Microsoft.PowerShell.Core)

作者:精品下载站 日期:2024-12-14 02:14:02 浏览:14 分类:玩电脑

Switch-Process (Microsoft.PowerShell.Core)


Switch-Process

模块 :Microsoft.PowerShell.Core

在 Linux 和 macOS 上,cmdlet 调用 execv() 函数以提供与 POSIX shell 类似的行为。

句法

Switch-Process
      [[-WithCommand] <String[]>]
      [<CommonParameters>]

描述

一些本机 Unix 命令会通过 shell 运行某些内容(例如 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[]

位置:

0

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

字符串[]

输出

对象

笔记

创建 Switch-Process cmdlet 是为了提供与其他 POSIX shell 的 exec 兼容性。在正常情况下,cmdlet 不适合在 PowerShell 脚本中使用。 Switch-Process 与 POSIX shell 中内置的 exec 函数没有相同的功能,例如文件描述符的处理方式,但应该涵盖大多数情况。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯