如何在 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 打印到控制台。
输出:

该输出表明 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 命令将所需文本打印到控制台。
输出:

该输出表明 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 仔细读取并执行从管道到来的命令。
输出:

该输出是 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。
输出:

该输出是 echo 命令被 CMD 处理的直接结果,该命令是在 PowerShell 中由 Invoke-Expression 调用的。
结论
在本次综合探索中,我们深入研究了在 Windows PowerShell 环境中运行命令提示符(CMD)命令的多样性,涵盖了四种不同的方法:直接调用运算符&、直接使用 cmd.exe、将命令管道传输到 CMD 的创新技术,以及动态的 Invoke-Expression cmdlet。每种方法都为将 CMD 的熟悉功能集成到 PowerShell 的高级脚本领域提供了独特的优势。
对于希望进一步提升 PowerShell 技能的人,深入研究创建自定义 PowerShell Cmdlets 或高级 PowerShell 脚本技术等高级主题是强烈推荐的,这将为混合 PowerShell 和 CMD 的优势打开更复杂和强大的脚本解决方案的大门。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn