So beenden Sie einen Windows-Prozess auf einem Remote-System

Vielleicht arbeitest du glücklich auf einem entfernten Windows-Server und findest dann einen Prozess, der wertvolle CPU-Zyklen verbraucht. Was tust du? Beende ihn!

In diesem Tutorial lernst du, wie du einen Windows-Prozess mithilfe von nativen Dienstprogrammen, Drittanbieter-Dienstprogrammen und PowerShell beendest. Zuerst lernst du, wie du die laufenden Prozesse in Windows untersuchst und dann beendest.

Voraussetzungen

Um den Schritten in diesem Tutorial folgen zu können, stellen sicher, dass du Folgendes vorab hast:

  • A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
  • A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
  • Die Sysinternals Suite von Microsoft.
  • Windows PowerShell 5 oder höher. Dieses Tutorial verwendet PowerShell v7.1.3.

Abfragen von Remote-Windows-Prozessen mit Tasklist

Seit Windows XP gibt es ein hilfreiches Tool namens tasklist. Tasklist ist ein praktisches Tool, das Prozesse auf entfernten Computern abfragt. Bevor du einen Prozess beenden kannst, musst du ihn zuerst entdecken!

Öffne eine PowerShell-Sitzung oder die Eingabeaufforderung auf deinem Desktop und gib den folgenden Befehl ein, um alle laufenden Prozesse auf deinem Remote-Computer anzuzeigen.

Der folgende Befehl fragt einen Remote-Computer ab (/S), authentifiziert die Verbindung mit dem Administrator-Benutzernamen (/U) und Passwort (/P).

tasklist /S WIN-BANGJIEFNOC.local.net /U administrator /P password

Sie werden unten feststellen, dass der Sitzungsname nicht angezeigt wird. Da Sie tasklist auf einem entfernten Computer ausführen, liefert tasklist nicht den Sitzungsnamen.

list of processes on a remote server

Vielleicht möchten Sie nur einen einzelnen Prozess auflisten. Kein Problem. Um dies zu tun, geben Sie den Parameter /FI an. Der Parameter /FI akzeptiert eine Abfrage, die an den tasklist übergeben wird, um bestimmte Prozesse zu filtern.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
The output of tasklist showing a specific process

Abrufen von Remote-Windows-Prozessen mit PSList

Ein weiteres Tool zum Anzeigen laufender Prozesse ist PSList, und dieses Dienstprogramm ist Teil der Sysinternals Suite. Diese Suite von Tools existiert seit vielen Jahren und wurde von Mark Russinovich, CTO von Azure, erstellt!

Lassen Sie uns damit beginnen, wie Sie laufende Prozesse auf einem entfernten Computer anzeigen können.

1. Öffnen Sie eine PowerShell-Sitzung oder Eingabeaufforderung auf Ihrem Desktop und ändern Sie das Verzeichnis zu dem Ort, an dem Sie die Sysinternals Suite extrahiert haben.

2. Führen Sie in Ihrer PowerShell-Sitzung den folgenden Befehl aus, um die laufenden Prozesse auf dem Remote-Computer und die zugehörige CPU-Auslastung in Echtzeit anzuzeigen.

Der folgende Befehl führt pslist aus, um alle entfernten Windows-Prozesse auf dem Computer WIN-BANGJIEFNOC abzufragen, wobei der Benutzername Administrator (-u) und das Passwort (-p) authentifiziert werden.

Der Befehl verwendet den -s-Schalter, um pslist in den „Task-Manager-Modus“ zu versetzen, der die Liste wiederholt aktualisiert.

Wenn Sie zum ersten Mal ein Sysinternals-Tool verwenden, kann ein Banner erscheinen, das Sie auffordert, die Endbenutzer-Lizenzvereinbarung (EULA) zu akzeptieren. Klicken Sie auf OK.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -s

Sie sehen nun die folgende Ausgabe nach Ausführung dieses Befehls; für diesen Artikel interessieren Sie sich für 3 dieser Werte. Wie unten gezeigt.

  • Name: Der Name des Prozesses.
  • Pid: Prozesskennung, ein kritischer Wert, der in diesem Tutorial verwendet wird. Die PID-Nummer kann verwendet werden, um einen entfernten Prozess zu beenden. Es handelt sich um die numerische ID, die einem Prozess zugewiesen ist.
  • CPU: Dies zeigt in nahezu Echtzeit die Auslastung Ihrer insgesamt verfügbaren CPU an.

Die anderen Werte beziehen sich auf den Speicher und liegen außerhalb des Umfangs dieses Artikels.

Output in real-time of pslist

3. Da Schritt zwei den -s-Schalter verwendet hat, drücken Sie Strg+C, um pslist zu beenden und zur Konsole zurückzukehren.

Verengen Sie die Liste der zurückgegebenen Prozesse, indem Sie den -e-Schalter gefolgt vom Prozessnamen verwenden, z.B. -e Winlogon.

Töten von Prozessen nach Prozessnamen mit PSKill

Nachdem Sie wissen, wie Sie entfernte Prozesse finden können, tauchen wir nun ein, wie Sie sie beenden können. Zunächst werden wir das pskill Utility behandeln. Lernen Sie zuerst, wie Sie Prozesse nach ihrem Prozessnamen beenden können.

1. Stellen Sie sicher, dass Sie einen Prozess auf Ihrem entfernten Server haben, den Sie beenden können. In diesem Tutorial wird der Notepad-Prozess verwendet.

2. Öffnen Sie eine PowerShell-Sitzung oder Eingabeaufforderung auf Ihrem lokalen Desktop und wechseln Sie zum Verzeichnis, in dem Sie die Sysinternal Suite extrahiert haben, und führen Sie den folgenden Befehl aus. Sie können sehen, dass die Syntax für pskill ähnlich wie für pslist ist.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p 'password' -e notepad.exe
Output of pskill

3. Führen Sie nun pslist aus, wie im vorherigen Abschnitt erklärt, um zu bestätigen, dass der Prozess tatsächlich beendet ist.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -e notepad.exe
Output of pslist

Töten von Prozessen nach Prozess-ID mit PSKill

Das Beenden des Prozesses nach Namen könnte für Ihre Bedürfnisse ausreichen, wenn nur eine einzige Instanz dieses Prozesses ausgeführt wird oder wenn Sie alle Prozesse mit diesem Namen beenden möchten. Was ist, wenn Sie eine bestimmte Instanz eines laufenden Prozesses beenden möchten? Die folgenden Schritte zeigen dies.

1. Öffnen Sie auf Ihrem entfernten Server zweimal Notepad; Sie werden einen dieser Prozesse in dieser Demonstration beenden; Sie können natürlich auch andere Prozesse ersetzen.

2. Führen Sie den folgenden Befehl aus und achten Sie auf eine der Pid‘s wie unten gezeigt; Sie benötigen dies für den nächsten Schritt.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad
Using pslist to list PID’s of Notepad

3. Verwenden Sie die PID und führen Sie jetzt pskill aus, wobei die PID als letztes Argument angegeben wird.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p password 1984
The output of pskill for a particular PID

4. Überprüfen Sie abschließend, ob noch eine Instanz von Notepad läuft, indem Sie pslist erneut ausführen. Sie sollten jetzt nur noch eine einzelne Instanz von Notepad sehen.

Output of pslist

Das Beenden von Remote-Windows-Prozessen mit TaskKill nach Name

Das Dienstprogramm taskkill ist nativ für Windows und umfasst weitere Befehlszeilenoptionen zum Neustarten von Prozessen nach Benutzername und Anwendungsname. Lassen Sie uns beginnen und Notepad erneut beenden!

Prozess nach Name beenden

1. Öffnen Sie auf Ihrem Remote-Server Notepad; Notepad ist der Prozess, den Sie in dieser Demonstration beenden werden; Sie können natürlich einen anderen Prozess verwenden.

2. Öffnen Sie eine PowerShell-Sitzung oder Eingabeaufforderung auf Ihrem Desktop. Durch Eingabe des folgenden Befehls wird notepad.exe beendet.

taskkill /S WIN-BANGJIEFNOC.local.net /you administrator /p password /IM notepad.exe

Die Ausgabe wird unten angezeigt:

/IM ist der Parameter für Image; in diesem Fall ist es notepad.exe

The output of taskkill command

3. Um zu bestätigen, dass der Prozess gestoppt ist, führen Sie tasklist aus. Sie sollten jetzt keine Tasks sehen, die diesem Filter entsprechen.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
Output of tasklist using imagename

Das Beenden von Remote-Windows-Prozessen mit TaskKill nach PID

Das Beenden eines Prozesses mit taskkill unter Verwendung einer PID unterscheidet sich nicht wesentlich vom Verwenden des Prozessnamens. Da Sie jedoch den Namen nicht verwenden können, müssen Sie zunächst die PID finden und diese dann an taskkill übergeben.

Angenommen, Notepad läuft auf Ihrem entfernten Windows-Host:

1. Führen Sie tasklist wie unten gezeigt aus, um die PID des Notepad-Prozesses zu finden. Notieren Sie sich eine der PID’s, wie unten gezeigt; Sie benötigen diese für den nächsten Schritt.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
the output of tasklist to view PIDS

2. Führen Sie nun taskkill aus und geben Sie die PID als letzten Argument an.

taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 3776
The output of taskkill specifying a particular PID

3. Führen Sie schließlich tasklist aus, um zu bestätigen, dass der Prozess gestoppt ist.

Output of tasklist

Entfernen eines Remote-Windows-Prozesses mit PowerShell

PowerShell bietet Ihnen ein paar Optionen zum Beenden von Remote-Prozessen; das erste Cmdlet Stop-Process kann keinen Remote-Prozess nativ beenden, da es keine Option zum Angeben eines Computernamens hat. Sie können dieses Problem jedoch umgehen, indem Sie Stop-Process remote über PowerShell Remoting ausführen.

1. Wenn Ihr Host und der Remote-Server nicht in einer Active Directory-Domäne sind, geben Sie zuerst einen Benutzernamen und ein Passwort an, um ein PSCredential-Objekt zu erstellen.

$credentials = Get-Credential
Setting up credentials

2. Als Nächstes, da das Tutorial SSL verwenden wird, um eine Verbindung zum Remote-Computer herzustellen und ein selbstsigniertes Zertifikat zu verwenden, erstellen Sie eine PSSessionOption, die die Zertifikatsprüfung für eine vertrauenswürdige Zertifizierungsstelle überspringt.

$PSSessionOption = New-PSSessionOption -SkipCACheck

3. Verbinden Sie sich nun mit dem Server mit dem Befehl Enter-PSSession, der eine interaktive Sitzung mit dem Remote-Server herstellt.

Der folgende Befehl verbindet sich mit dem Computer WIN-BANGJIEFNOC.local.net unter Verwendung des oben angegebenen Benutzernamens und Passworts (Credential), überspringt die Überprüfung der Zertifizierungsstelle (SessionOption) und stellt eine Verbindung über SSL her (UseSSL).

Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL
Using Enter-PsSession for an interactive session

4. Sobald Sie mit dem Remote-Host verbunden sind, überprüfen Sie den Prozess, den Sie beenden möchten, indem Sie Get-Process ausführen. In diesem Fall sehen Sie den notepad-Prozess.

Get-Process -ProcessName Notepad
Output of Get-Process

5. Um diesen Prozess zu beenden, führen Sie Stop-Process aus, wie unten gezeigt.

Stop-Process -ProcessName Notepad

6. Bestätigen Sie schließlich, dass Sie den Prozess beendet haben, indem Sie Get-Process erneut ausführen, und Sie sollten eine Fehlermeldung erhalten.

Checking for Notepad as a running process

Wenn Sie einen Remote-Windows-Prozess nicht interaktiv stoppen möchten, verwenden Sie den Befehl Invoke-Command mit den folgenden Parametern: Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL. Der Stop-Proces-Befehl im ScriptBlock-Parameter sendet den Befehl an den Remote-Host.

Conclusion

Du hast verschiedene Methoden gelernt, um entfernte Prozesse zu beenden, und wie man Situationen überwindet, in denen Netzwerk-Firewall-Regeln verhindern könnten, dass Dienstprogramme korrekt funktionieren; dieses Tutorial hat dir möglicherweise auch geholfen, Windows zu reparieren.

Die Dienstprogramme, die du gelernt hast, sind leistungsstarke Werkzeuge; benutze sie mit Vorsicht!

Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/