2017-02-01 6 views
0

Powershell verwenden ich eine ausführbare Datei fange mit invoke-expression wie:Wie Pause ignorieren - eine beliebige Taste drücken - in Powershell, während Datei ausführt

Invoke-Expression "c:\exec.exe" 

jetzt mein Problem dieses exec ist so etwas wie „Pause und drücken Sie zeigt jede Taste um fortzufahren ".

Ich habe versucht:

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

Aber kein Glück.

Meine Frage ist kann ich ignorieren diese Nachricht eine Art von Unterdrückung oder gibt es eine Möglichkeit, die Ausgabe zu überwachen und simulieren Drücken einer beliebigen Taste?

+1

Ist die ausführbare Datei nicht ein '/ quiet' s Hexe? – gvee

+0

Darf ich fragen, was EXE ist? Ist es vielleicht ein allgemein verfügbares Programm? – JensG

+0

Nein, es ist eine 3rd-Part-App, die ich zu automatisieren versuche. –

Antwort

2

können Sie die Eingabe umleiten Schlüssel von Powershell, um das Programm von Process und Verfahren:

$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

Mit $host.UI.RawUI.ReadKey nicht tun, was Sie wollen - die ReadKey Funktion wartet auf Eingabe und gibt Informationen über die Taste, die gedrückt wurde. Anstatt also Eingaben zu senden, wartet es auf Eingaben.

This answer bezieht sich auf Ihre Situation - vielleicht können Sie die dort vorgeschlagene Methode verwenden.

2

Wenn exec.exe eine regelmäßige Konsolenanwendung ist a la eine neue Zeile erwartet:

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

Sie dann könnte nur einen Newline zu ihm:

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