Mam skrypt ps1, aby pobrać pewne informacje ze środowiska klastra vmware.Jak wykonać naciśnięcie klawisza wewnątrz powłoki?
W niektórych miejscach skryptu ps1 wymagane jest naciśnięcie klawisza przycisku ENTER.
Jak to zrobić?
-Dzięki
Mam skrypt ps1, aby pobrać pewne informacje ze środowiska klastra vmware.Jak wykonać naciśnięcie klawisza wewnątrz powłoki?
W niektórych miejscach skryptu ps1 wymagane jest naciśnięcie klawisza przycisku ENTER.
Jak to zrobić?
-Dzięki
Jeśli dobrze rozumiem, chcesz PowerShell, aby wysłać ENTER klawiszy do jakiegoś interaktywnej aplikacji?
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('title of the application window')
Sleep 1
$wshell.SendKeys('~')
Jeśli to interaktywna aplikacja jest skrypt PowerShell, wystarczy użyć co jest na pasku tytułowym okna PowerShell jako argument AppActivate (domyślnie ścieżka do powershell.exe). Aby uniknąć niejednoznaczności, możesz nakazać, aby twój skrypt retitował własne okno, używając polecenia title 'new window title'
.
Kilka uwag:
{ENTER}
, ale nie są one identyczne - jest to klucz klawiatury numerycznej klawiatury ENTER. Pełna lista dostępna jest tutaj: http://msdn.microsoft.com/en-us/library/office/aa202943%28v=office.10%29.aspx.Sleep 1
jest poczekać 1 sekundę, ponieważ zajmuje chwilę, aby uaktywnić okno, a jeśli powołać SendKeys natychmiast, to będzie wysłać klucze do okna PowerShell, albo nigdzie.Czasami Wscript.Shell „s SendKeys metoda może być trochę dziwaczny, więc jeśli napotkasz problemy, wymienić czwartą linię wyżej z tym:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait('~');
Dzięki za dodanie tego typu do końca. Waliłem głową o ścianę przez godzinę, próbując uruchomić skrypt. – sliderhouserules
który jest skrypt napisałem, wymaga ** klawisza ENTER **. zamiast wciskać ** wciskaj ** cały czas, po prostu chcę zautomatyzować. – HamTheAstroChimp
Dlaczego wymaga naciśnięcia Enter? Czy wykonujesz read-host? –
Myscript ciągłe logowanie/wylogowanie z kilku maszyn. Do czasu wylogowania wymaga potwierdzenia, więc muszę nacisnąć przycisk ** Enter **. To jest powód, dla którego chcę zautomatyzować. – HamTheAstroChimp