在 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn