2017-02-01 44 views
0

使用PowerShell我使用invoke-expression如啓動一些可執行文件:如何忽略暫停 - 按任意鍵 - 在PowerShell中同時執行文件

Invoke-Expression "c:\exec.exe" 

現在我的問題是這樣的高管正顯示出類似「暫停,按任意鑰匙繼續「。

我想:

Function Run-Tool 
{ 
    Invoke-Expression "c:\exec.exe" 
    $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") 
} 

,但沒有運氣。

我的問題是我可以忽略這種消息某種抑制或有沒有辦法監視輸出並模擬按任何鍵?

+1

可執行文件沒有「/ quiet」s巫婆? – gvee

+0

我可以問一下那是什麼EXE?這可能是一個普遍可用的程序嗎? – JensG

+0

不,它是我嘗試自動化的第三方應用程序。 –

回答

2

可以使用的ProcessStartInfo和處理重定向從PowerShell將程序輸入鍵:

$psi = New-Object System.Diagnostics.ProcessStartInfo; 
$psi.FileName = "C:\yourexe.exe"; 
$psi.UseShellExecute = $false; 
$psi.RedirectStandardInput = $true; 

$p = [System.Diagnostics.Process]::Start($psi); 

Start-Sleep -s 2 # if your exe needs time to give output 

$p.StandardInput.WriteLine("`n"); 
0

使用$host.UI.RawUI.ReadKey不會做你以後的事 - ReadKey函數等待輸入並返回被按下的鍵的信息。所以不是發送輸入,而是等待輸入。

This answer與您的情況有關 - 也許您可以使用建議的方法。

2

如果exec.exe是一個普通的控制檯應用程序期待一個換行符一拉:

Console.Write("Press any key to exit..."); 
Console.ReadLine(); 

然後你可能只需要一條換行符:

"`n" |& C:\exec.exe