在命令提示符中运行 PowerShell 命令
许多旧的命令提示符命令在 PowerShell 脚本环境中工作。Windows PowerShell 环境使用别名从旧环境中传递这些命令。
但是,命令提示符终端中的某些命令在 Windows PowerShell 的脚本环境中不起作用,反之亦然。
本文将讨论在这两种解释器中运行 PowerShell 和遗留命令。
在 PowerShell 中使用调用运算符 &
当我们运行命令行程序时,旧的命令提示符命令将成功运行。
如果我们采用下面的示例语法,在 CMD 中运行它,它将成功运行。
"C:\temp\setup.exe" /s /qn
但是,如果我们使用上面的相同代码段并在 Windows PowerShell 中运行它,我们将收到一个异常错误。
错误背后的原因是 PowerShell 将双引号 ""
视为文字字符串值。语法中附带的参数在任何 PowerShell 本机库中都不存在。
此外,在 PowerShell 中只执行带引号的路径只会输出字符串值,而不是运行可执行文件本身。
"C:\temp\setup.exe"
输出:
C:\temp\setup.exe
为了解决这个问题,我们可以调用命令行开头的 & 符号所代表的 Invocation 运算符来正确运行 Windows PowerShell 中的可执行路径。
& "C:\temp\setup.exe" /s /qn
Windows PowerShell 中的调用运算符&
会将字符串路径视为可执行文件的文字路径。
因此,它将使用随附的命令参数直接执行脚本。
在 PowerShell 中的命令提示符内运行 PowerShell.exe
在这种方法中,我们将扭转局面。我们现在将尝试在命令提示符界面中运行 PowerShell 命令。
例如,如果我们在命令提示符中运行上述代码段,脚本解释器将无法正确读取参数。为了解决这个问题,我们可以用单引号''
将整个语法括起来。
powershell.exe -noexit "& '"C:\temp\setup.exe" /s /qn"
上例中的 -noexit
参数在命令提示符内运行 cmd 脚本后不会退出 PowerShell 会话。
我们可以运行下面的代码片段来调出 powershell.exe
命令的帮助文档,以获取有关其他函数和参数的更多信息。
powershell.exe /?
在 PowerShell 中运行 cmd.exe
在 PowerShell 中运行 CMD 命令的另一个示例是调用 cmd.exe
应用程序。
添加并执行后,PowerShell 将在 Windows PowerShell 命令提示符内调用命令行界面会话。
cmd.exe /c "C:\temp\setup.exe" /s /qn
/c
参数将执行命令行界面中参数后跟的任何命令。
在上面的示例中,表达式 "C:\temp\setup.exe" /s /qn
将在 cmd.exe
中执行,因为命令在 /c
开关参数之后。
我们可以运行下面的代码片段来调出 cmd.exe
命令的帮助文档,以获取有关其他函数和参数的更多信息。
此外,我们可以在 PowerShell 和 CMD 命令行解释器上运行以下命令。
cmd.exe /?
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn