在PowerShell中运行CMD命令

时间:2014-07-24 17:29:04

标签: 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)

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

5 个答案:

答案 0 :(得分:69)

试试这个:

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

要PowerShell字符串“...”只是一个字符串,PowerShell通过将其回显到屏幕来对其进行评估。要让PowerShell执行名称在字符串中的命令,请使用调用运算符&

答案 1 :(得分:37)

要从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"

*需要将每个命令放在再次调用cmd.exe的新行上。

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

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

答案 2 :(得分:1)

一种解决方案是将命令从PowerShell管道到CMD。运行以下命令会将jest.config.js命令传递到CMD,CMD随后将打开记事本应用程序。

notepad.exe

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


编辑

显示CMS的启动消息

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

答案 3 :(得分:0)

您必须使用Invoke-Command cmdlet启动此外部程序。通常情况下它会毫不费力地工作。

如果您需要多个命令,则应使用带有-scriptblock选项的Invoke-Expression cmdlet。

答案 4 :(得分:0)

对于那些可能需要此信息的人:

我发现您几乎可以从PS脚本运行PATH中的命令,并且该命令应该可以工作。

有时您可能必须使用cmd.exe /c

预先启动此命令

示例

从PS脚本调用git

我不得不重新包装用git包装的Chocolatey客户端(对于那些可能不知道的人,这是Windows的一种应用商店),该客户端大量使用PS脚本。

我发现,一旦git进入PATH,类似的命令

$ca_bundle = git config --get http.sslCAInfo

git crt文件的位置存储在$ca_bundle变量中。

正在寻找应用

将当前SO帖子和this SO post结合在一起的另一个示例是使用where命令

$java_exe = cmd.exe /c where java

java.exe文件的位置存储在$java_exe变量中。