Warten bis Programm beendet wurde

Die Interaktion zwischen Programmen und Skripten ist nicht immer ganz einfach, darum möchte ich hier ein sinnvolles Skript vorstellen. Dieses prüft ob ein Programm in der Prozessliste von Windows existiert und wartet bis es beendet wird.

1
2
3
4
5
6
7
8
9
10
11
$Programm = Get-Process notepad
 
if($Programm)
{
  $Programm.WaitForExit()
  write-host "Das Programm wurde soeben beendet!"
}
else
{
  write-host"Das Programm wurde nicht ausgeführt!"
}

Prozess über Exe-Name beenden

Hier wird ein Prozess anhand dessen Namen beendet. Hier am Beispiel des Internet Explorers:

Alle Internet Explorer beenden

1
get-process iexplore | stop-process

Besser ist:

1
get-process iexplore | foreach-object {$_.Kill()}

Hinweis:
Bei den Beispielen oben kommt es zu einem Fehler, wenn die Anwendung nicht läuft!

Und so sollte es gemacht werden…

1
get-process | where-object {$_.name -eq "iexplore"} | stop-process

Informationen zu Prozessen mit “Get-Process”

Get-Process ruft die laufenden Prozesse ab und kann zusätzliche Informationen zu diesen anzeigen.

Möchte man mit Hilfe der Windows Powershell alle laufenden Prozesse angezeigt bekommen, so hilft das folgende Comandlet:

1
get-process

Um die Ergebnisliste etwas übersichtlicher zu halten kann man mit einem Parameter die Liste schon im Voraus filtern:

1
get-process s*

Hier würden alle Prozesse angezeigt werden, die mit einem “s” beginnen.

Informationen zu dem Prozess “winword” anzeigen:

1
get-process winword

oder sollen gleich mehrere Prozesse parallel angezeigt werden:

1
get-process winword,explorer,notepad