在PowerShell中运行CMD命令

27 浏览
0 Comments

在PowerShell中运行CMD命令

我在运行PowerShell命令时遇到了一系列问题。它只是运行在CMD提示窗口中运行的命令。\n以下是命令:\n\"C:\\Program Files (x86)\\Microsoft Configuration Manager\\AdminConsole\\bin\\i386\\CmRcViewer.exe\" PCNAME\n我已经尝试了以下方法,但都没有成功(我尝试了许多次迭代,试图找到一个可行的方法。语法可能都搞砸了):\n

$TEXT = $textbox.Text #$textbox是用户输入计算机名称的地方。
$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)

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

0
0 Comments

问题的出现原因:

- 在PowerShell中运行CMD命令时,可能会遇到一些问题。例如,某些命令可能无法在PowerShell中直接运行,或者需要使用CMD的特定功能。

解决方法:

- 一种解决方法是将PowerShell中的命令通过管道传递给CMD。通过运行以下命令,将notepad.exe命令传递给CMD,然后CMD将打开记事本应用程序。

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

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

Edits:

- 如mklement0所指出,这种方法会显示CMD的启动消息。如果将上述方法的输出复制到另一个终端中,启动消息也会被复制。

- 即使在PowerShell中使用&符号时不能正常工作,这种方法仍然有效。例如,& "mklink"对我来说无法正常工作,而"mklink" | cmd可以正常工作。

0
0 Comments

运行CMD命令在PowerShell中的问题是由于PowerShell无法直接执行CMD命令而导致的。解决方法是在PowerShell中创建一个脚本,然后通过调用cmd.exe来执行CMD命令。

在脚本中,每个CMD命令需要放在一个新的行中,并再次调用cmd.exe。这样可以保证脚本可以被签名并从PowerShell中运行,并将命令输出到命令提示符/cmd中。

这种方法比直接运行批处理文件更安全。如果想要执行批处理文件,尤其是希望为所有计划任务脚本签名的情况下,可以使用这种方法。

例如,如果想要运行命令sc query serviceName,可以使用以下命令:

cmd.exe /c "sc query serviceName"

对于.exe文件,也可以在PowerShell中直接运行它们,而不需要使用cmd命令。只需要记住PowerShell无法解析sc命令,但可以解析sc.exe命令,所以可以使用sc.exe query serviceName来运行。同样,对于fc.exe命令,只需要使用fc.exe file1.bin file2.bin即可在PowerShell控制台中运行。

总结起来,通过在PowerShell中创建脚本并调用cmd.exe来执行CMD命令可以解决在PowerShell中无法直接运行CMD命令的问题。这种方法比直接运行批处理文件更安全,同时也可以在PowerShell中直接运行.exe文件。

0
0 Comments

问题的出现原因:

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

问题的解决方法:

要执行命令名称为字符串形式时,使用&符号。如果命令的名称或路径中有空格,则必须使用&符号。如果命令的名称或路径中没有空格,则不需要使用&符号。构造命令行字符串并尝试使用&执行不起作用,因为PowerShell会认为整个字符串是可执行文件的名称。相反,应该只引用可执行文件的名称,并在后面添加可执行文件的参数。

&与cmd的区别:

&是PowerShell调用运算符,用于执行命令。它允许在字符串中包含命令的名称或exe文件的路径时执行命令。还可以指定脚本块(例如&{$foo=42})或CommandInfo对象(例如$cmd = Get-Command Get-Date; &$cmd)。cmd是不同的shell。需要注意的是,&在子范围中执行,因此可以注意到在设置$foo的脚本块完成后,$foo不再被设置。

在一个无法工作的脚本上解决了几个小时的痛苦,只添加了这个简单的字符。感谢这个简单明了的解释。

对于上下文而言,我正在更新一个Windows 10的autounattend.xml脚本,该脚本从可启动的USB中静默安装Windows,然后启动一个配置批处理脚本。之前,脚本只会回显命令,而不执行。

0