Ich habe ps1-Skript, um einige Informationen aus der VMware-Cluster-Umgebung abzurufen.
An einigen Stellen des ps1-Skripts muss die Taste [~ # ~] [~ # ~] eingeben gedrückt werden.
Also, wie geht das?
-Vielen Dank
Wenn ich das richtig verstehe, soll PowerShell den [~ # ~] Eingabetastenanschlag [~ # ~] an eine interaktive Anwendung senden?
$wshell = New-Object -ComObject wscript.Shell;
$wshell.AppActivate('title of the application window')
Sleep 1
$wshell.SendKeys('~')
Wenn es sich bei dieser interaktiven Anwendung um ein PowerShell-Skript handelt, verwenden Sie einfach die Angaben in der Titelleiste des PowerShell-Fensters als Argument für AppActivate (standardmäßig den Pfad zu powershell.exe). Um Unklarheiten zu vermeiden, können Sie Ihr Skript ein eigenes Fenster mit einem neuen Titel versehen, indem Sie title 'new window title'
Befehl.
Ein paar Anmerkungen:
{ENTER}
, obwohl sie nicht identisch sind - das ist die Tastatureingabe [~ # ~] [~ # ~] . Eine vollständige Liste finden Sie hier: http://msdn.Microsoft.com/en-us/library/office/aa202943%28v=office.10%29.aspx .Sleep 1
Die Anweisung wartet 1 Sekunde, da es einen Moment dauert, bis das Fenster aktiviert wird. Wenn Sie SendKeys sofort aufrufen, werden die Schlüssel an das PowerShell-Fenster gesendet, oder ins Nirgendwo.Manchmal kann die SendKeys -Methode von wscript.Shell etwas schrullig sein. Wenn Sie also auf Probleme stoßen, ersetzen Sie die vierte Zeile oben mit diesem:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait('~');