在 PowerShell 中运行 CMD 命令

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 使用 PowerShell 调用运算符 &
  2. 使用 cmd.exe 运行 CMD 命令
  3. 使用 PowerShell 管道连接到 CMD
在 PowerShell 中运行 CMD 命令

许多旧的命令提示符 (CMD) 命令在 Windows PowerShell 脚本环境中工作。PowerShell 环境使用别名将这些命令从最常用的命令(如 ping)转发到使用别名的遗留环境中的信息最多的命令(如 tracert)。

但是,命令提示符终端中的某些正在运行的命令在 Windows PowerShell 的脚本环境中不起作用。本文将讨论如何将它们正确转录到 Windows PowerShell。

使用 PowerShell 调用运算符 &

当我们使用位于特定路径的可执行文件格式 (.exe) 运行命令行程序时,旧版 CMD 将成功运行,然后是实际命令。

如果我们采用下面的示例语法,如果我们在 CMD 中运行脚本,我们可以使用 Avast 命令行扫描仪执行快速扫描,它会成功运行。

示例代码:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

但是,如果我们采用相同的语法并在 Windows PowerShell 中运行它,我们将得到一个异常错误。错误背后的原因是 Windows PowerShell 将双引号 "" 视为文字字符串值,并且语法中随附的 /Quick 参数在任何本机库中均不可用。

此外,在 Windows PowerShell 中仅运行带引号的路径将仅输出字符串值,而不是运行可执行文件本身。

示例代码:

"C:\Program Files\AVAST Software\Avast\ashCmd.exe"

输出:

C:\Program Files\AVAST Software\Avast\ashCmd.exe

为了解决这个问题,我们可以在命令行开头调用 Invocation 运算符或 & 符号& 以在 Windows PowerShell 中正确运行可执行路径。

& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick

在 PowerShell 环境中使用调用运算符会将字符串路径视为可执行文件的实际路径。因此,它将使用随附的命令参数直接运行脚本。

使用 cmd.exe 运行 CMD 命令

运行 CMD 命令的另一个示例是使用 cmd.exe。我们可以像之前的方法一样在 Windows PowerShell 中添加 cmd.exe

添加并执行后,它将调用 Windows PowerShell 命令提示符内的命令行界面。

cmd.exe /c where python

参数/c 将执行输入的任何命令并终止 cmd.exe 命令行解释器。

你可以运行以下语法来调出 cmd.exe 命令的帮助文档以获取有关其他参数的更多信息。此外,你可以在 PowerShell 和 CMD 命令行界面上运行以下命令。

cmd.exe /?

使用 PowerShell 管道连接到 CMD

在 Windows PowerShell 中,我们还可以通过将 cmd cmdlet 中的管道传递到你要发送的命令来将命令发送到命令提示符终端。

在下面的示例语法中,查询本地计算机 IP 配置的请求被发送到 CMD 命令行界面。运行代码后,CMD 终端被终止,用户被带回 PowerShell 终端,在行首用 PS 表示。

示例代码:

"Ipconfig /all" | cmd
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn