2016-03-22 3 views
0

Ich versuche, ein Powershell-Skript zu erstellen, um eine Installation eines Programms zu automatisieren, das ich verwende (leider hat das Programm kein stilles Installationsprogramm). Das Problem ist, dass das Installer-Fenster nicht die von sendkeys gesendeten Schlüssel braucht: Wenn ich nur Enter drücke, funktioniert es und das Senden mit sendkeys zu einem anderen Fenster funktioniert auch, aber das Senden mit sendkeys zu diesem bestimmten Installer-Fenster hat gewonnen tu nichts. Ist jemand diesem Problem zuvor begegnet und weiß, wie man es löst? das Skript, das ich zu verwenden ist versucht, ist wie folgt:Warum nimmt ein Fenster keine Schlüssel, die von Sendkeys gesendet werden?

add-type -AssemblyName microsoft.VisualBasic 
add-type -AssemblyName System.Windows.Forms 

./installer.exe 

start-sleep 1 

[Microsoft.VisualBasic.Interaction]::AppActivate('select setup language') 
start-sleep 1 

[System.Windows.Forms.SendKeys]::SendWait('~'); 

P. S es ist kein Timing-Problem: Ich habe versucht, die Schlafzeiten zu ändern, aber das wird nichts nützen.

Danke!

+0

Ist das Installationsprogramm erhöht, während das Powershell-Skript nicht aktiviert ist? Beachten Sie, dass Sie z. B. nicht zwischen Fenstern mit unterschiedlichen Berechtigungsstufen ziehen und ablegen können. – briantist

+0

@briantist - danke für deinen Kommentar. Ich bin mir nicht sicher, ob ich verstehe, was Sie meinen - das Installationsprogramm hat den Fokus, wenn das Skript die Eingabetaste sendet. – shayelk

+0

Wird das Skript im Administratormodus ausgeführt? Wenn nicht, führen Sie dieses Skript als Administratorrechte aus, auch wenn Sie auf diesem System Administrator sind. –

Antwort

0

Sie müssen nur dieses Skript als Administrator ausführen. Weil es oft vorkommt, dass das Skript, selbst wenn wir Admin-Rechte haben, die Funktionalität auf den WinForms oder anderen Dingen nicht ausführen kann. Es ist also eine gute Übung, das Skript als Administrator auszuführen (als Administrator ausführen).