如何在 PowerShell 中运行 CMD 命令

  1. 使用 PowerShell 调用运算符 &
  2. 使用 cmd.exe 运行 CMD 命令
  3. 通过 PowerShell 管道传输到 CMD
  4. 结论
We’ve created a detailed YouTube video to accompany this article, embedded below!
如何在 PowerShell 中运行 CMD 命令

许多传统的命令提示符(CMD)命令可以在 Windows PowerShell 脚本环境中使用。PowerShell 环境通过别名将这些命令从最常用的命令(如 ping)到最具信息性的命令(如 tracert)带入传统环境。

然而,某些在命令提示符终端中运行的命令在 Windows PowerShell 的脚本环境中将无法工作。本文将讨论我们如何将它们正确转录到 Windows PowerShell 中。

使用 PowerShell 调用运算符 &

在多才多艺的脚本世界中,PowerShell 因其能够结合并执行来自其他脚本环境(尤其是命令提示符(CMD))的命令而脱颖而出。实现这一目标的最直接方法之一是通过调用运算符(&)。

本文深入探讨了在 PowerShell 中使用调用运算符来运行 CMD 命令,这对于希望将 PowerShell 和传统 CMD 脚本的功能联系起来的人来说是一项重要技能。

使用调用运算符的基本语法如下:

& <Command-String> <Arguments>
  • &:这是调用运算符。
  • <Command-String>:这是您想要执行的命令。这可以是一个 CMD 命令、一个 PowerShell cmdlet 或一个脚本块。
  • <Arguments>:这是可选的,表示命令所需的任何参数或参数。

示例代码:

& cmd.exe /c echo "Hello from CMD"

在该脚本中,我们利用调用运算符&在 PowerShell 中无缝地执行 CMD 命令。首先,我们调用 cmd.exe,即命令提示符的指定可执行文件,以确保我们在正确的命令行环境中工作。

然后我们将参数/c 传递给 cmd.exe,这是一个关键指令,指示命令提示符执行指定的命令并立即终止。我们选择的命令 echo "Hello from CMD"是一个直接且有效的演示,因为它只是将消息 Hello from CMD 打印到控制台。

输出:

在 PowerShell 中运行 cmd 命令 - 输出 1

该输出表明 CMD 命令 echo 在 PowerShell 中成功执行,显示了预期的消息。

使用 cmd.exe 运行 CMD 命令

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

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

在 PowerShell 中直接使用 cmd.exe 的语法如下:

cmd.exe /c "<Command-String>"
  • cmd.exe:这是命令提示符的可执行文件。
  • /c:这是一个参数,指示 cmd.exe 执行字符串所指定的命令,然后终止。
  • "<Command-String>":这是您想要执行的 CMD 命令或命令系列。

示例代码:

cmd.exe /c "echo Hello from CMD"

在该脚本中,我们通过直接调用 cmd.exe/c 参数将 CMD 功能无缝集成到 PowerShell 中,然后是我们感兴趣的命令 echo Hello from CMD。通过使用 cmd.exe /c,我们在 PowerShell 和 CMD 之间架起了一座桥梁,使我们能够在 PowerShell 脚本中利用熟悉的命令行环境和功能。

命令"echo Hello from CMD"是这一集成的简单而生动的示例,我们利用基本的 CMD 命令将所需文本打印到控制台。

输出:

在 PowerShell 中运行 cmd 命令 - 输出 2

该输出表明 CMD echo 命令在 PowerShell 中成功执行,显示了消息 Hello from CMD

通过 PowerShell 管道传输到 CMD

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

在 PowerShell 中管道传输到 CMD 主要用于在 PowerShell 上下文中执行 CMD 命令或批处理脚本。当需要运行没有直接 PowerShell 等价物的 CMD 命令或处理传统 CMD 脚本时,此方法特别有用。

在 PowerShell 中管道传输到 CMD 的基本语法是:

"<Command-String>" | cmd.exe /c -
  • "<Command-String>":这是您希望执行的 CMD 命令。
  • |:这是 PowerShell 管道运算符,它将一个命令的输出作为另一个命令的输入传递。
  • cmd.exe /c -:这调用命令提示符执行通过管道传递给它的命令。- 表示 cmd.exe 应该从标准输入(stdin)中接收命令。

示例代码:

"echo Hello from CMD" | cmd.exe

在此示例中,我们使用管道技术将字符串"echo Hello from CMD"发送到 cmd.exe,展示了 PowerShell 的管道能力与 CMD 命令执行的优雅结合。

我们的旅程始于"echo Hello from CMD",这是一个简单而有效的 CMD 命令,作为字符串封装,旨在在 CMD 环境中执行时显示特定的消息。

然后我们使用管道运算符|,这是 PowerShell 中的强大工具,将该命令字符串无缝转发到 cmd.exe。这一过程的最终结果在 cmd.exe /c - 中得到体现,其中 - 符号发挥了至关重要的作用,指示 cmd.exe 仔细读取并执行从管道到来的命令。

输出:

在 PowerShell 中运行 cmd 命令 - 输出 3

该输出是 CMD echo 命令的结果,打印 Hello from CMD 到屏幕上。

使用 Invoke-Expression 在 PowerShell 中运行 CMD 命令

通过 Invoke-Expression cmdlet 执行 CMD 命令在 PowerShell 中是一种多才多艺且强大的方法。当需要动态构建和执行命令或脚本块时,此方法特别有用。

本文探讨了 Invoke-Expression 方法在 PowerShell 中运行 CMD 命令的目的、应用和用法。

Invoke-Expression 的语法是:

Invoke-Expression -Command "<Command-String>"
  • -Command:这指定要执行的命令。该参数可以缩写为 -C
  • "<Command-String>":这是包含要执行的命令的字符串。

示例代码:

Invoke-Expression -Command "cmd.exe /c echo Hello from CMD"

在我们的脚本中,我们利用 Invoke-Expression 的强大功能,巧妙地执行一个包含在字符串中的 CMD 命令。我们的过程以 Invoke-Expression -Command 开始,这是一个关键的 cmdlet 和参数组合,使 PowerShell 能够解释和执行提供的命令字符串。

然后,我们引入"cmd.exe /c echo Hello from CMD"作为我们选择的命令字符串。该字符串巧妙地指示 cmd.exe 使用参数/c,这一指令要求 CMD 执行随后的命令,然后结束其进程。

该字符串中的 echo 命令是我们的执行核心,旨在在 CMD 中输出 Hello from CMD

输出:

在 PowerShell 中运行 cmd 命令 - 输出 4

该输出是 echo 命令被 CMD 处理的直接结果,该命令是在 PowerShell 中由 Invoke-Expression 调用的。

结论

在本次综合探索中,我们深入研究了在 Windows PowerShell 环境中运行命令提示符(CMD)命令的多样性,涵盖了四种不同的方法:直接调用运算符&、直接使用 cmd.exe、将命令管道传输到 CMD 的创新技术,以及动态的 Invoke-Expression cmdlet。每种方法都为将 CMD 的熟悉功能集成到 PowerShell 的高级脚本领域提供了独特的优势。

对于希望进一步提升 PowerShell 技能的人,深入研究创建自定义 PowerShell Cmdlets 或高级 PowerShell 脚本技术等高级主题是强烈推荐的,这将为混合 PowerShell 和 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