如何在 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