我遇到了一些运行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远程连接窗口打开到用户在文本框中指定的计算机。
答案 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脚本。
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
变量中。