Ich bin ein Starter zu PowerShell, also vielleicht ist dies eine dumme Frage.PowerShell - Schleife während MainWindowTitle nicht gefunden
Es ist ein einfaches Skript. Ich möchte ein Programm öffnen, das selbst verschiedene Fenster öffnet. Der erste ist nur ein Fenster, in dem gefragt wird, ob ich mich verbinden möchte. Mit
[System.Windows.Forms.SendKeys]::SendWait("{TAB}{TAB}{TAB}{TAB}{ENTER}")
Ich bestätige nur, dass ich eine Verbindung herstellen möchten. Jetzt ist das nächste Fenster knifflig. Es dauert einige Zeit zu laden und ich kenne seine MainWindowTitle. Was ich will nicht tun, ist
Start-Sleep -Milliseconds 20000
zu schreiben, um lange genug zu warten. Manchmal ist es innerhalb weniger Sekunden geöffnet und manchmal dauert es sogar länger als 20s. Daher dachte ich, es wäre eine gute Idee, etwas in eine Schleife zu legen und darauf zu warten, dass der Prozess vollständig gestartet wird. Hier ist, was ich getan habe (und was nicht funktioniert ...):
while (!$winid) {
Start-Sleep -Milliseconds 1000
$winid = Get-Process |where {$_.MainWindowTitle -like "*windowtitle*"} |select -expand id
write-host $winid
}
Ich habe die write-host $winid
das Ergebnis meiner Get-Process zu zeigen. Aber es ist NULL die ganze Zeit, auch wenn das Fenster für eine lange Zeit geöffnet ist.
Wenn ich mein Skript zu stoppen und schreiben einfach
Get-Process |where {$_.MainWindowTitle -like "windowtitle"} |select -expand id
es funktioniert! Weiß nicht, warum ...
Wie kann ich das Skript überprüfen, ob das benötigte Fenster geöffnet und für einige Tastenanschläge bereit ist?
Danke, Tobias
Danke für Ihre Antwort! Die App, die ich öffne, erstellt im Grunde eine Remote-Verbindung. Dabei öffnet es das erste Fenster - das würde mit deinem Code funktionieren. Aber dieses Fenster wird direkt wieder geschlossen, wenn ich "connect" wähle und ich bekomme eine neue Prozess-ID. Ich fand heraus, dass der Fenstername des neuen Fensters, das ich zu fangen versuchte, irgendwie nicht korrekt benannt wurde, bis mein Skript fertig war. Ich habe den temporären Namen gefunden und in meinem Skript hinzugefügt. Jetzt funktioniert es. Aber da deine Antwort auf 99% der Eröffnungs-Apps zutrifft und wirklich hilft für andere Dinge, die ich gerne tun würde, werde ich sie als richtig markieren! – TXP
Und danke für den ForegroundColor Tipp in deiner Antwort! Immer lernen... – TXP