在PowerShell中运行CMD命令

use*_*839 68 powershell command-line cmd

我遇到了一些关于运行PowerShell命令的问题.它所做的只是运行一个将在CMD提示窗口中运行的命令.

这是命令:

"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME

我已经尝试了以下但没有成功(我尝试过多次迭代尝试并获得一个有效.语法可能都搞砸了):

$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"' $TEXT)
Run Code Online (Sandbox Code Playgroud)

该命令将只打开SCCM远程连接窗口到用户在文本框中指定的计算机.

Kei*_*ill 77

试试这个:

& "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
Run Code Online (Sandbox Code Playgroud)

要PowerShell一个字符串"..."只是一个字符串,PowerShell通过将其回显到屏幕来评估它.要使PowerShell执行名称在字符串中的命令,请使用call运算符&.

  • 我想补充一点,它不能用于构造命令行字符串并尝试用`&`执行,因为PowerShell会认为整个字符串是可执行文件的名称.而是仅引用可执行文件的名称,然后放置可执行文件的参数. (13认同)
  • 是的,但对于没有名字或路径空间的前提,没有必要.例如,您可以执行`ipconfig.exe`而无需使用`&`.您需要使用`&`的唯一时间是以字符串形式调用命令名称.当路径或文件名中有空格时,您必须使用"字符串形式". (4认同)
  • `&` 是 PowerShell 调用(又名调用)运算符。当您拥有的是包含命令名称或 exe 路径的字符串时,它允许您执行命令。您还可以指定一个脚本块,例如 `&{$foo=42}` 或 CommandIno 对象,例如 `$cmd = Get-Command Get-Date; &$cmd`。`cmd` 是一个不同的 shell。请注意,“&”在子作用域中执行,因此您会注意到,在上面设置“$foo”的脚本块完成后,“$foo”不再被设置。 (2认同)

Arm*_* G. 45

要从PowerShell外部运行或转换批处理文件(特别是如果您希望使用证书对所有计划任务脚本进行签名),我只需创建一个PowerShell脚本,例如deletefolders.ps1.

在脚本中输入以下内容:

cmd.exe /c "rd /s /q C:\#TEMP\test1"

cmd.exe /c "rd /s /q C:\#TEMP\test2"

cmd.exe /c "rd /s /q C:\#TEMP\test3"
Run Code Online (Sandbox Code Playgroud)

*每个命令都需要再次调用cmd.exe.

此脚本现在可以从PowerShell签名并运行,cmd直接将命令输出到命令提示符/ .

它比运行批处理文件更安全!


ree*_*ard 10

一个解决办法是你的命令从PowerShell来CMD。运行以下命令会将notepad.exe命令通过管道传送到 CMD,然后 CMD 将打开记事本应用程序。

PS C:\> "notepad.exe" | cmd

命令在 CMD 中运行后,您将返回到 PowerShell 提示符,并可以继续运行 PowerShell 脚本。


编辑

显示 CMD 的启动信息

正如mklement0 所指出的,这个方法显示了 CMD 的启动消息。如果您要使用上述方法将输出复制到另一个终端,则启动消息将随之复制。

  • 即使“&”不起作用,它也可以起作用。例如 `& "mklink"` 对我不起作用,而 `"mklink" | cmd` 起作用了 (4认同)