HowTo: PowerShell: Verwalten von lokalen Prozessen

by Martin on 7. Mai 2008

Auflisten von Prozessen

Das Auflisten aller lokalen Prozesse, wird mit dem aufrufen des Cmdlets get-process ohne zusätzliche Parameter ausgeführt.

PS C:\get-process

Dies führt dann zur folgenden Ausgabe:

image

Anzeigen eines Prozesses mit einer bestimmten ProcessID

Mit get-process ist es auch möglich, ein Prozess einzeln anzuzeigen, welche eine bestimmte ProcessID hat.

PS C:\get-process -id ProessID

Um den Prozess mit der ProcessID 4380 anzuzeigen, müsste man folgendes eingeben:

PS C:\get-process -id 4380

Das wäre dann die Ausgabe:

image

Anzeigen von Prozessen mit einer bestimmten Zeichenfolge

Die Suche nach Prozessen mit einer bestimmten Zeichenfolge realisiert man so:

PS C:\get-process -name Zeichenfolge

Will ich nach dem Prozess svchost suchen, wäre der Befehl:

PS C:\get-process -name svchost

Die Ausgabe:

image

Sortieren von Prozessen

Ebenfalls lassen sich die Prozesse nach verschiedenen Kriterien sortieren. Dafür gibt es das Cmdlet sort-object.

PS C:\get-process | sort-object id

Mit diesem Befehl werden die Prozesse nach ProcessID absteigend sortiert.

Möchte man aber z.B: die Top 5 Prozesse anzeigen, welche am meisten CPU Zeit benutzt haben, wäre dies der Befehl:

PS C:\get-process |  sort-object CPU -descending | select-object -first 5

Die Ausgabe wäre:

image

Stoppen von Prozessen mit einer Process ID oder Zeichenkette

Mit stop-process lassen sich auch Prozesse beenden anhand von Zeichenketten oder ProcessID.

Um einen Prozess mit einer ProcessID zu beenden, gibt man folgendes ein:

PS C:\stop-process -id 4380

4380 ist die ProzessID, welcher dieses Prozess besitzt.

Das beenden eines Prozesses anhand einer Zeichenkette würde man folgendes eingeben:

PS C:\stop-process -name explorer

Somit werden alle Prozesse mit dem Namen explorer beendet. Es können auch Wildchards benutzt werden, zulässig wäre auch ex*. Nur besteht dann die Gefahr, das auch andere Prozesse, welche ex in ihrem Namen haben, geschlossen werden. Dafür gibt es aber eine Lösung.

PS C:\stop-process -name ex* -confirm

Die Ausgabe wäre dann:

image

Es wird also zuerst auf eine Bestätigung (Confirm) vom User gewartet.

Prozesse beenden, welche nicht mehr reagieren

Hier kommt nun ein Vorzug von PowerShell zum tragen, es lassen sich auch nur Prozesse beenden, welche nicht mehr reagieren.

Dafür würde man folgendes eingeben:

PS C:\get-process | where-object -filterscript {$_.responding -eq $false} | stop-process

Erklärung dazu:
Zuerst werden die Prozesse mit get-process eingelesen, danach mit where-object wird nach Prozessen gesucht, welche nicht mehr reagieren und mit stop-process werden diese dann beendet.

Das “|” Zeichen nennt man Pipeline, es verbindet mehrere Befehle, welche nacheinander abgearbeitet werden.

Verwandte Beiträge:

  • Keine Verwandte Beiträge

{ 1 comment… read it below or add one }

1 sports hats Oktober 19, 2010 um 09:05

The package arrived on a Monday and was to have been delivered the same day. UPS had a variety of excuses why this couldn’t happen. Tuesday came and went. So did most of Wednesday. With the conference starting Thursday, we were desperate.

Antworten

Leave a Comment

Previous post:

Next post: