Du musst auf einem entfernten Windows Computer schnell einen Befehl ausführen, einen Dienst überprüfen oder ein Problem im Systemkontext nachstellen, möchtest dafür aber keine vollständige Remotedesktopverbindung verwenden? Genau für solche Aufgaben ist PsExec sehr gut geeignet. Das kleine kostenlose Kommandozeilenwerkzeug kann Programme lokal oder auf anderen Windows Geräten starten und deren Ausgabe direkt in Deinem Windows Terminal anzeigen.

PsExec ist leistungsfähig, benötigt aber administrative Rechte. Eine falsche Verwendung kann Systeme verändern, Sicherheitswarnungen auslösen oder Anmeldedaten unnötig offenlegen. In dieser Anleitung zeigen wir deshalb nicht nur, wie PsExec funktioniert, sondern auch, wie Du das Tool sicher verwendest, typische Befehle ausführst und häufige Fehler beheben kannst.

Was ist PsExec?

PsExec ist ein kostenloses Befehlszeilenwerkzeug aus der Microsoft Sysinternals Sammlung. Es startet Prozesse auf dem lokalen Windows Computer oder auf einem entfernten Windows Gerät. Dabei kann PsExec die Konsolenausgabe des gestarteten Programms an Dein lokales Terminal zurückgeben.

Der wichtigste Einsatzzweck ist die Remoteadministration. Du kannst zum Beispiel den Computernamen eines entfernten PCs abfragen, Netzwerkeinstellungen auslesen, einen Dienst kontrollieren, ein Diagnoseprogramm starten oder eine Eingabeaufforderung auf dem Zielsystem öffnen. Eine manuelle Installation eines dauerhaften PsExec Clients auf dem Zielcomputer ist dafür nicht erforderlich.

PsExec kann außerdem Prozesse im lokalen Systemkonto starten. Dieses Konto wird von vielen Windows Diensten und Verwaltungsprogrammen verwendet und besitzt umfangreichere lokale Rechte als ein normales Administratorkonto. Dadurch eignet sich PsExec auch zum Testen von Installationen, Skripten und Zugriffsproblemen, die nur im Systemkontext auftreten.

PsExec ist keine grafische Fernsteuerung und kein Ersatz für eine vollständige Remotedesktopsitzung. Das Tool führt gezielt einen Prozess aus. Für Programme mit grafischer Oberfläche gibt es zwar den interaktiven Parameter -i, in der Praxis sind Konsolenprogramme und unbeaufsichtigte Aufgaben jedoch zuverlässiger.

Eine kürzere Anleitung speziell für eine entfernte Eingabeaufforderung findest Du im Beitrag Eingabeaufforderung auf einem Remote Windows PC mit PsExec öffnen.

Wie funktioniert PsExec bei einem Remotezugriff?

Wie funktioniert PsExec bei einem Remotezugriff?

Bei einem typischen Remoteaufruf verbindet sich PsExec mit den Windows Verwaltungsfunktionen des Zielcomputers. Das Tool nutzt die administrative Freigabe ADMIN$, erstellt vorübergehend einen Dienst und startet darüber den gewünschten Prozess. Die Standardausgabe und der Rückgabecode des Programms werden anschließend an den aufrufenden Computer übertragen.

Der Ablauf lässt sich vereinfacht in sechs Schritte gliedern:

  1. PsExec authentifiziert sich mit Deinen aktuellen Anmeldedaten oder mit dem Konto, das Du über -u angibst.
  2. Das Tool prüft den Zugriff auf den Zielcomputer und dessen administrative Freigabe.
  3. PsExec überträgt die benötigte Dienstkomponente auf das Zielsystem.
  4. Der temporäre Dienst PSEXESVC wird erstellt und gestartet.
  5. Der Dienst startet den angegebenen Befehl im gewünschten Benutzerkontext.
  6. Nach dem Ende des Befehls entfernt PsExec den temporären Dienst und die zugehörige Datei normalerweise wieder.

Genau dieser Mechanismus erklärt, warum PsExec Administratorrechte, funktionierende Windows Freigaben und den Zugriff auf bestimmte Netzwerkports benötigt. Er erklärt auch, warum Sicherheitsprogramme PsExec besonders aufmerksam überwachen. Das Werkzeug ist legitim, kann wegen seiner weitreichenden Funktionen aber auch missbraucht werden.

Wofür wird PsExec verwendet?

PsExec eignet sich besonders für einzelne administrative Aufgaben, bei denen Du schnell einen Prozess auf einem Windows Computer starten möchtest. Typische Einsatzbereiche sind:

  • Remoteabfrage von hostname, ipconfig, systeminfo oder anderen Konsolenbefehlen
  • Öffnen einer entfernten Eingabeaufforderung
  • Starten eines Prozesses als lokales Systemkonto
  • Ausführen eines Diagnoseprogramms auf mehreren Computern
  • Starten eines Installationsprogramms mit unbeaufsichtigten Parametern
  • Prüfen von Windows Diensten und Prozesseigenschaften
  • Nachstellen der Rechte eines Dienstes oder einer Softwareverteilung
  • Ausführen eines PowerShell Befehls auf einem Zielsystem, auf dem WinRM nicht vorbereitet ist

Für eine reine Systemabfrage kannst Du PsExec zum Beispiel mit systeminfo kombinieren. Die wichtigsten Felder des Befehls erläutert der Beitrag Windows Systeminformationen mit Systeminfo abfragen.

Welche Voraussetzungen braucht PsExec?

Für eine lokale Ausführung genügt in vielen Fällen ein administrativ gestartetes Terminal. Für einen Remotezugriff müssen dagegen mehrere Bedingungen gleichzeitig erfüllt sein.

Administratorrechte auf dem Zielcomputer

Das verwendete Konto muss auf dem Zielcomputer administrative Rechte besitzen. Es reicht nicht, nur auf Deinem eigenen PC Administrator zu sein. In einer Active Directory Umgebung eignet sich ein dafür freigegebenes Administratorkonto. In einer Arbeitsgruppe kannst Du ein lokales Konto des Zielcomputers verwenden.

Starte auch das lokale Terminal mit erhöhten Rechten. Eine passende Anleitung findest Du unter CMD als Administrator ausführen. Nutzt Du lieber das moderne Terminal, hilft Dir der Beitrag Windows Terminal als Administrator starten.

Erreichbarer Computername oder erreichbare IP Adresse

Der Zielcomputer muss eingeschaltet und über das Netzwerk erreichbar sein. Am einfachsten verwendest Du den DNS Namen, zum Beispiel PC01. Alternativ kannst Du eine IP Adresse angeben. Ein erfolgreicher Ping ist hilfreich, aber nicht zwingend. Windows kann ICMP blockieren, obwohl PsExec über die benötigten TCP Ports erreichbar ist.

TCP Port 445 und TCP Port 135

Für den Remotezugriff verwendet PsExec insbesondere TCP 445 für SMB und TCP 135 für die Windows Remoteverwaltung über RPC. Beide Ports müssen zwischen Deinem Verwaltungscomputer und dem Zielsystem erreichbar sein. Die Zusammenhänge rund um SMB erläutert der Beitrag SMB Port 445 und Port 139.

Prüfe die Ports in einer PowerShell mit diesen Befehlen:

Test-NetConnection -ComputerName PC01 -Port 445
Test-NetConnection -ComputerName PC01 -Port 135

Entscheidend ist jeweils die Ausgabe TcpTestSucceeded : True.

Mit PowerShell Test-NetConnection die Verbindung für PSEXEC testen

Öffne diese Ports nur in vertrauenswürdigen internen Netzen oder über eine abgesicherte VPN Verbindung. Eine Portweiterleitung aus dem Internet auf 135 oder 445 ist keine geeignete Lösung.

Administrative Freigabe ADMIN$

PsExec benötigt in der Regel Zugriff auf ADMIN$. Diese versteckte administrative Freigabe verweist auf das Windows Verzeichnis des Zielsystems. Du kannst den Zugriff vorab testen:

dir \\PC01\ADMIN$

Benötigst Du ein anderes Administratorkonto, kannst Du eine Verbindung mit verdeckter Kennworteingabe herstellen:

net use \\PC01\ADMIN$ /user:FIRMA\AdminUser *

Das Sternchen sorgt dafür, dass Windows das Kennwort abfragt, statt es sichtbar in den Befehl zu schreiben. Nach dem Test entfernst Du die Verbindung wieder:

net use \\PC01\ADMIN$ /delete

Wie Du vorhandene Freigaben kontrollierst, zeigt die Anleitung Windows Netzwerkfreigaben anzeigen.

Passende Firewallregeln und laufende Windows Dienste

Auf dem Zielcomputer müssen die Regeln für Datei und Druckerfreigaben sowie die benötigten Verwaltungszugriffe erlaubt sein. In verwalteten Netzen solltest Du die Freigaben gezielt auf bekannte Verwaltungscomputer oder Verwaltungsnetze begrenzen. Eine passende Gruppenrichtlinie wird im Beitrag Windows Firewall für Datei und Druckerfreigaben per Gruppenrichtlinie konfigurieren beschrieben.

Der Windows Dienst Server mit dem Dienstnamen LanmanServer muss laufen, damit SMB Freigaben bereitgestellt werden. Der Dienst Remoteregistrierung ist für PsExec dagegen keine allgemeine Voraussetzung. Auch WinRM muss für PsExec nicht aktiviert sein.

Freigabe durch Sicherheitsrichtlinien

Microsoft Defender, Angriffsflächenreduzierungsregeln, Anwendungssteuerung oder eine andere Endpoint Security Lösung kann PsExec erkennen oder blockieren. Deaktiviere den Schutz nicht pauschal. Prüfe stattdessen, ob der Einsatz in Deinem Unternehmen genehmigt ist und ob eine eng begrenzte Freigabe für das signierte Originalwerkzeug und den vorgesehenen Verwaltungscomputer möglich ist.

PsExec herunterladen und unter Windows vorbereiten

PsExec herunterladen und unter Windows vorbereiten

PsExec wird nicht mit Windows installiert. Das Programm gehört zur PsTools Sammlung und lässt sich ohne klassisches Setup verwenden.

Schritt 1: PsExec aus dem offiziellen Bereich herunterladen

Lade die aktuelle PsTools Sammlung über den offiziellen PsExec Download mit Parameterübersicht herunter. Verwende für administrative Werkzeuge nur die Originaldatei aus einem vertrauenswürdigen Bereich.

Schritt 2: ZIP Archiv entpacken

Erstelle zum Beispiel den Ordner C:\Tools\PsTools und entpacke das Archiv dort. In dem Verzeichnis findest Du unter anderem PsExec.exe und je nach Paket eine für 64 Bit Systeme vorgesehene Variante.

Zeigt Windows in den Dateieigenschaften die Option Zulassen oder Entsperren an, kannst Du diese vor der ersten Ausführung aktivieren. Dadurch entfernst Du die Markierung, die Windows bei Dateien aus dem Internet setzt. Kontrolliere vorher, ob die Datei aus dem richtigen Download stammt.

Schritt 3: Terminal als Administrator öffnen

Öffne die Eingabeaufforderung oder das Windows Terminal als Administrator und wechsle in den Ordner:

cd /d C:\Tools\PsTools

In einer PowerShell musst Du eine ausführbare Datei aus dem aktuellen Verzeichnis normalerweise mit .\ aufrufen:

.\PsExec.exe

Schritt 4: Lizenzbedingungen anzeigen und akzeptieren

Beim ersten Start zeigt PsExec die Lizenzbedingungen an. Lies sie durch und bestätige sie. Für automatisierte, zuvor genehmigte Abläufe gibt es den Parameter -accepteula. Er sollte nicht dazu verwendet werden, die Lizenz ungeprüft zu überspringen.

Schritt 5: Lokalen Funktionstest durchführen

Mit diesem ungefährlichen Test prüfst Du, ob PsExec startet:

PsExec.exe -accepteula -nobanner cmd.exe /c echo PsExec funktioniert

In einer PowerShell lautet der Aufruf entsprechend:

.\PsExec.exe -accepteula -nobanner cmd.exe /c echo PsExec funktioniert

PsExec Syntax einfach erklärt

Die grundlegende Struktur eines PsExec Befehls lautet:

PsExec.exe \\ZIELCOMPUTER [Optionen] Programm [Argumente]

Der Zielcomputer steht mit zwei führenden umgekehrten Schrägstrichen im Befehl. Danach folgen die PsExec Optionen, das auszuführende Programm und dessen eigene Argumente. Lässt Du den Zielcomputer weg, startet PsExec den Prozess lokal.

Die wichtigsten PsExec Parameter

ParameterBedeutungTypischer Einsatz
\\PC01Legt den Zielcomputer festRemoteausführung auf PC01
@computer.txtLiest mehrere Zielcomputer aus einer TextdateiGleichen Befehl auf einer genehmigten Geräteliste ausführen
-uGibt ein anderes Benutzerkonto anFIRMA\AdminUser oder PC01\LokalerAdmin
-pÜbergibt ein KennwortBesser weglassen, damit PsExec das Kennwort verdeckt abfragt
-sStartet den Prozess im lokalen SystemkontoDienstkontext testen oder administrative Wartung ausführen
-hVerwendet das erhöhte Administratortoken des Kontos, sofern verfügbarUAC geschützte Verwaltungsaufgabe mit einem Administratorkonto ausführen
-iStartet den Prozess interaktiv in einer SitzungKonsole oder grafisches Testprogramm in einer bestimmten Sitzung öffnen
-cKopiert das angegebene Programm auf das ZielsystemEin lokales Diagnosewerkzeug remote ausführen
-fErzwingt das Kopieren einer bereits vorhandenen DateiVorhandene Programmdatei auf dem Zielcomputer ersetzen
-vKopiert nur eine neuere Datei oder eine Datei mit höherer VersionUnnötige Übertragungen vermeiden
-dWartet nicht auf das Ende des gestarteten ProzessesLänger laufende unbeaufsichtigte Aufgabe anstoßen
-wSetzt das Arbeitsverzeichnis auf dem ZielcomputerProgramm mit relativen Konfigurationspfaden starten
-nLegt ein Verbindungstimeout in Sekunden festBei nicht erreichbaren Computern schneller abbrechen
-rVerwendet einen selbst gewählten Namen für den temporären DienstKonflikt mit einem hängen gebliebenen Standarddienst umgehen
-accepteulaAkzeptiert die Lizenzbedingungen ohne DialogGenehmigte Automatisierung nach vorheriger Prüfung
-nobannerBlendet das Startbanner ausÜbersichtlichere Skriptausgabe

Wichtige Regel für Pfade

Ein Pfad hinter dem Programmnamen bezieht sich grundsätzlich auf den Zielcomputer. Der lokale Pfad C:\Tools\Programm.exe existiert auf dem Remotecomputer möglicherweise nicht. Verwende in diesem Fall -c, oder lege die Datei vorher an einem bekannten Zielpfad ab.

Enthält ein Pfad Leerzeichen, setze ihn in Anführungszeichen:

PsExec.exe \\PC01 "C:\Program Files\Firma\Tool.exe" /silent
PsExec Schritt für Schritt auf einem Remotecomputer verwenden

PsExec Schritt für Schritt auf einem Remotecomputer verwenden

Schritt 1: Namen und Netzwerkverbindung prüfen

Ersetze in allen Beispielen PC01 durch den echten Computernamen. Prüfe zuerst die Namensauflösung und die benötigten Ports:

ping PC01
powershell.exe -NoProfile -Command "Test-NetConnection -ComputerName PC01 -Port 445"
powershell.exe -NoProfile -Command "Test-NetConnection -ComputerName PC01 -Port 135"

Ein fehlgeschlagener Ping allein beweist keine Störung. Sind die beiden TCP Tests erfolgreich, ist die wichtigste Netzwerkgrundlage vorhanden.

Schritt 2: Zugriff auf ADMIN$ testen

dir \\PC01\ADMIN$

Erhältst Du eine Verzeichnisliste, kann Dein aktuelles Konto auf die administrative Freigabe zugreifen. Bei einer Kennwortabfrage oder einer Fehlermeldung solltest Du zuerst die Berechtigungen und vorhandene SMB Verbindungen prüfen.

Schritt 3: Einfachen Remotebefehl ausführen

Starte zunächst einen Befehl, der keine Systemänderung vornimmt:

PsExec.exe \\PC01 -accepteula -nobanner hostname

PsExec sollte den Computernamen ausgeben und anschließend melden, mit welchem Fehlercode das Programm beendet wurde. Der Code 0 bedeutet bei vielen Programmen Erfolg. Die genaue Bedeutung bestimmt jedoch immer das gestartete Programm.

Schritt 4: Netzwerkkonfiguration des Zielcomputers anzeigen

PsExec.exe \\PC01 -nobanner ipconfig.exe /all

Die Ausgabe stammt vom Remotecomputer und erscheint in Deinem lokalen Terminal. So kannst Du IP Adresse, DNS Server und Netzwerkadapter prüfen, ohne eine grafische Sitzung zu öffnen.

Schritt 5: Andere Anmeldedaten sicher verwenden

Wenn Dein aktuelles Konto nicht verwendet werden soll, gib nur den Benutzernamen an:

PsExec.exe \\PC01 -u FIRMA\AdminUser -nobanner hostname

PsExec fordert das Kennwort anschließend verdeckt an. Schreibe das Kennwort möglichst nicht hinter -p in den Befehl. Ein sichtbares Kennwort kann in Skripten, Protokollen, Terminalverläufen oder Prozessinformationen auftauchen.

Schritt 6: Interaktive Remote Eingabeaufforderung öffnen

PsExec.exe \\PC01 -i -nobanner cmd.exe

Du arbeitest danach in einer Eingabeaufforderung, deren Befehle auf PC01 ausgeführt werden. Kontrolliere direkt nach dem Start das Ziel:

hostname
whoami

Beende die entfernte Eingabeaufforderung mit:

exit

Schritt 7: Rückgabecode auswerten

PsExec gibt den Exitcode des gestarteten Programms zurück. In einer Batchdatei kannst Du ihn über %ERRORLEVEL% prüfen:

PsExec.exe \\PC01 -nobanner hostname
echo Rueckgabecode: %ERRORLEVEL%

Verlasse Dich nicht pauschal darauf, dass jeder von null abweichende Code denselben Fehler bedeutet. Prüfe die Dokumentation des Programms, das Du mit PsExec gestartet hast.

Praktische PsExec Befehle für Administratoren

Praktische PsExec Befehle für Administratoren

Lokale Eingabeaufforderung als SYSTEM starten

Dieser Befehl öffnet auf Deinem eigenen PC eine interaktive Eingabeaufforderung im lokalen Systemkonto:

PsExec.exe -i -s cmd.exe

Prüfe den Kontext mit:

whoami

Das Systemkonto besitzt sehr weitreichende Rechte. Verwende diese Konsole nur für einen klar definierten Test und schließe sie danach mit exit. Arbeite darin nicht wie in einer normalen Benutzersitzung.

Remoteprozess als SYSTEM ausführen

PsExec.exe \\PC01 -s -nobanner cmd.exe /c whoami

Der Befehl wird auf PC01 im lokalen Systemkonto ausgeführt. Das ist hilfreich, wenn Du das Verhalten eines Dienstes oder einer Softwareverteilung nachstellen möchtest.

Erhöhtes Administratortoken verwenden

PsExec.exe \\PC01 -h -nobanner cmd.exe /c whoami /groups

Der Parameter -h verwendet das erhöhte Token des angegebenen Administratorkontos, sofern Windows ein solches Token bereitstellt. Hintergrundinformationen zur Rechteaufteilung findest Du im Beitrag Was ist die UAC Benutzerkontensteuerung?.

Windows Dienst remote prüfen

PsExec.exe \\PC01 -nobanner sc.exe query Spooler

Damit fragst Du den Status der Druckwarteschlange auf dem Zielcomputer ab. Ändere oder beende einen Dienst nur, wenn Du seine Aufgabe und mögliche Abhängigkeiten kennst. Weitere Verwaltungswege erklärt der Beitrag Windows Dienste starten und stoppen.

PowerShell Befehl mit PsExec starten

PsExec.exe \\PC01 -nobanner powershell.exe -NoProfile -Command "Get-Service -Name Spooler"

Hier startet PsExec die Windows PowerShell auf dem Zielcomputer. Für häufige und umfangreiche PowerShell Automatisierungen ist PowerShell Remoting meist besser geeignet. Wie Du WinRM vorbereitest, zeigt die Anleitung Windows Client für Remote PowerShell Kommandos mit WinRM vorbereiten.

Freien Speicherplatz remote prüfen

PsExec.exe \\PC01 -nobanner powershell.exe -NoProfile -Command "Get-Volume | Select-Object DriveLetter, SizeRemaining, Size"

Eine alternative Remoteabfrage ohne PsExec findest Du unter freien und belegten Speicherplatz lokal oder remote per PowerShell abfragen.

Lokales Programm auf den Zielcomputer kopieren und starten

PsExec.exe \\PC01 -c -f -nobanner "C:\Tools\Inventur.exe" /silent

Mit -c kopiert PsExec die lokale Programmdatei zum Zielsystem. -f überschreibt eine vorhandene Version. Verwende nur vertrauenswürdige Programme und prüfe vorher, welche unbeaufsichtigten Parameter die jeweilige Anwendung unterstützt.

Programm in einem bestimmten Arbeitsverzeichnis starten

PsExec.exe \\PC01 -w C:\Install -nobanner C:\Install\Setup.exe /silent

Der Parameter -w setzt das Arbeitsverzeichnis auf dem Zielcomputer. Das ist wichtig, wenn eine Anwendung Konfigurationsdateien über relative Pfade sucht.

Befehl auf mehreren Computern ausführen

Erstelle eine Textdatei, die pro Zeile einen genehmigten Computernamen enthält:

PC01
PC02
PC03

Führe anschließend den Befehl gegen diese Liste aus:

PsExec.exe @C:\Tools\computer.txt -n 10 -nobanner hostname

Teste einen neuen Befehl immer zuerst auf einem einzelnen Testgerät. Erst wenn Ergebnis, Rückgabecode und Nebenwirkungen bekannt sind, solltest Du ihn auf mehrere Systeme anwenden.

Remotecomputer neu starten

PsExec.exe \\PC01 -nobanner shutdown.exe /r /t 0

Dieser Befehl startet PC01 sofort neu. Prüfe vor der Ausführung, ob angemeldete Personen, offene Dateien oder laufende Aufgaben betroffen sind. Für viele Geräte solltest Du ein geplantes Wartungsfenster und eine zentrale Verwaltungsplattform verwenden.

Systemlaufzeit des Zielcomputers abfragen

PsExec.exe \\PC01 -nobanner powershell.exe -NoProfile -Command "(Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime"

Weitere Möglichkeiten ohne PsExec findest Du in der Anleitung Windows Uptime remote abfragen.

PsExec Zugangsdaten richtig verwenden

Am sichersten ist es, wenn Dein aktuelles Windows Konto bereits die erforderlichen Rechte auf dem Zielcomputer besitzt. Dann lässt Du -u und -p vollständig weg. In einer Domäne verwendet PsExec Deine bestehende Anmeldung.

Musst Du ein anderes Konto angeben, verwende -u ohne -p. PsExec zeigt dann eine verdeckte Kennwortabfrage. Das Kennwort wird dadurch nicht als sichtbarer Bestandteil der Befehlszeile gespeichert.

Verwende kein Domänenadministratorkonto für alltägliche Remoteaufgaben. Besser sind getrennte Administratorkonten mit gezielt delegierten Rechten, zeitlich begrenzte Berechtigungen oder lokal verwaltete Kennwörter. Je mehr Computer ein Konto verwalten darf, desto größer ist der mögliche Schaden bei einem kompromittierten Kennwort.

Ein weiterer Stolperstein ist der Zugriff des gestarteten Remoteprozesses auf zusätzliche Netzwerkfreigaben. Ohne ausdrücklich angegebenes Konto kann der Prozess in bestimmten Konstellationen zwar lokal auf dem Zielcomputer arbeiten, aber nicht auf einen dritten Netzwerkserver zugreifen. Verwende für solche Aufgaben ein dafür vorgesehenes Domänenkonto und prüfe dessen Rechte nach dem Prinzip der geringsten Berechtigung.

Typische PsExec Fehler und passende Lösungen

Typische PsExec Fehler und passende Lösungen

PsExec wird nicht als Befehl erkannt

Die Meldung bedeutet meistens, dass sich das Programm nicht im aktuellen Verzeichnis und nicht in der Umgebungsvariable PATH befindet. Wechsle in den PsTools Ordner:

cd /d C:\Tools\PsTools
PsExec.exe

In einer PowerShell verwendest Du:

cd C:\Tools\PsTools
.\PsExec.exe

Access is denied oder Zugriff verweigert

Diese Meldung weist meist auf fehlende Rechte oder eine blockierte administrative Anmeldung hin. Prüfe folgende Punkte:

  1. Das lokale Terminal läuft als Administrator.
  2. Das verwendete Konto ist auf dem Zielcomputer tatsächlich Administrator.
  3. Der Zugriff auf \\PC01\ADMIN$ funktioniert mit demselben Konto.
  4. Es besteht keine ältere SMB Verbindung zum Zielcomputer mit anderen Anmeldedaten.
  5. Die Benutzerkontensteuerung filtert kein lokales Administratorkonto bei einer Remoteanmeldung.
  6. Eine Sicherheitsrichtlinie blockiert die Erstellung des temporären Dienstes nicht.

Zeige bei einem Anmeldekonflikt zuerst die vorhandenen Netzwerkverbindungen an:

net use

Entferne anschließend die betreffenden Verbindungen zum Zielcomputer:

net use \\PC01\ADMIN$ /delete
net use \\PC01\IPC$ /delete

Stelle danach eine neue Verbindung mit verdeckter Kennworteingabe her:

net use \\PC01\ADMIN$ /user:FIRMA\AdminUser *

Deaktiviere die Benutzerkontensteuerung nicht pauschal, nur damit PsExec funktioniert. Verwende in einer Domäne besser ein genehmigtes Domänenkonto mit lokalen Administratorrechten. In Arbeitsgruppen ist ein sauberes Administrationskonzept mit verwalteten lokalen Konten sicherer als eine allgemeine Lockerung der Remote UAC Regeln.

Der Netzwerkpfad wurde nicht gefunden

Prüfe zuerst Schreibfehler, DNS Auflösung, Port 445 und die administrative Freigabe:

ping PC01
powershell.exe -NoProfile -Command "Resolve-DnsName PC01"
powershell.exe -NoProfile -Command "Test-NetConnection PC01 -Port 445"
dir \\PC01\ADMIN$

Ist der Computer nur per IP Adresse erreichbar, kannst Du diese testweise verwenden:

PsExec.exe \\192.168.10.25 -nobanner hostname

Eine IP Adresse löst jedoch keine Probleme mit Authentifizierung, Firewall oder Freigaben. In einer Domäne ist ein funktionierender DNS Name meist die bessere Grundlage.

Couldn’t install PSEXESVC service

PsExec konnte den temporären Dienst nicht erstellen oder starten. Häufige Ursachen sind fehlende Administratorrechte, ein blockierter Schreibzugriff auf das Windows Verzeichnis, eine Sicherheitsregel oder ein hängen gebliebener Dienst eines früheren Aufrufs.

Prüfe den Dienststatus:

sc.exe \\PC01 query PSEXESVC

Wenn sicher kein berechtigter PsExec Vorgang mehr läuft, kannst Du einen verwaisten Dienst stoppen und löschen:

sc.exe \\PC01 stop PSEXESVC
sc.exe \\PC01 delete PSEXESVC

Kontrolliere anschließend, ob die Datei noch vorhanden ist:

dir \\PC01\ADMIN$\PSEXESVC.exe

Lösche eine verbliebene Datei nur, wenn Du den Prozess eindeutig beendet hast und Deine Sicherheitsrichtlinien dies erlauben. Starte danach einen neuen Test mit der aktuellen PsExec Version.

Error communicating with PsExec service

Bei dieser Meldung konnte der lokale PsExec Prozess nicht korrekt mit dem temporären Dienst kommunizieren. Neben Firewall und Sicherheitssoftware kommen unterschiedliche Programmversionen, ein abgestürzter Dienst oder ein Namenskonflikt infrage.

Nach einer kontrollierten Bereinigung kannst Du testweise einen anderen Dienstnamen verwenden:

PsExec.exe \\PC01 -r PSEXEC_TEST -nobanner hostname

Bleibt der Fehler bestehen, prüfe die Ereignisanzeige, die Protokolle Deiner Endpoint Security Lösung und die Erreichbarkeit der Ports 135 und 445.

Das gestartete Fenster ist auf dem Zielcomputer nicht sichtbar

Grafische Programme erscheinen auf modernen Windows Systemen nicht automatisch im sichtbaren Desktop eines angemeldeten Benutzers. Dienste laufen in einer getrennten Sitzung. Ermittle zuerst die aktive Sitzung:

query user /server:PC01

Starte das Testprogramm anschließend mit der passenden Sitzungsnummer, zum Beispiel Sitzung 1:

PsExec.exe \\PC01 -i 1 -d notepad.exe

Selbst mit -i sind grafische Programme über PsExec nicht für jeden Anwendungsfall geeignet. Für eine vollständige sichtbare Bedienung ist eine Remotedesktopverbindung meist zuverlässiger. Wie Du RDP remote aktivierst, zeigt der Beitrag Remotedesktop per PowerShell remote aktivieren.

Der angegebene Befehl oder Pfad wurde nicht gefunden

Denke daran, dass PsExec den Befehl auf dem Zielcomputer sucht. Ein lokaler Pfad ist dort möglicherweise nicht vorhanden. Verwende einen vollständigen Pfad auf dem Zielsystem oder kopiere eine ausführbare Datei mit -c.

Prüfe außerdem Anführungszeichen bei Leerzeichen und das Arbeitsverzeichnis. Ein Programm kann vorhanden sein und trotzdem scheitern, wenn es seine Konfigurationsdatei nur relativ zum Startordner sucht.

PsExec meldet einen Fehlercode, obwohl die Verbindung funktioniert

Der von PsExec gemeldete Code stammt normalerweise vom gestarteten Programm. Ein Installationsprogramm kann zum Beispiel einen eigenen Code für einen erforderlichen Neustart zurückgeben. Suche deshalb nach der Bedeutung des Rückgabecodes für genau dieses Programm und behandle ihn in Deinem Skript entsprechend.

Microsoft Defender oder eine andere Sicherheitslösung blockiert PsExec

PsExec ist ein legitimes Verwaltungswerkzeug, besitzt aber Funktionen, die auch bei Angriffen verwendet werden können. Eine Warnung bedeutet deshalb nicht automatisch, dass die heruntergeladene Originaldatei schädlich ist. Sie sollte trotzdem ernst genommen werden.

Prüfe Herkunft, digitale Signatur, Dateipfad, aufrufendes Konto, Zielcomputer und den ausgeführten Befehl. Lege keine globale Ausnahme für PsExec oder PSEXESVC an. Eine erforderliche Freigabe sollte so eng wie möglich auf genehmigte Administratoren, Verwaltungscomputer, Pfade und Einsatzzwecke begrenzt werden.

PsExec sicher verwenden: wichtige Regeln

PsExec kann innerhalb weniger Sekunden Prozesse mit höchsten lokalen Rechten auf entfernten Computern starten. Diese Stärke verlangt klare Sicherheitsregeln.

Ports 135 und 445 niemals direkt aus dem Internet freigeben

Verwende PsExec nur in einem vertrauenswürdigen internen Netzwerk oder über eine abgesicherte VPN Verbindung. Begrenze Firewallregeln auf die wirklich benötigten Quellcomputer und Zielsysteme.

Nur freigegebene Verwaltungscomputer verwenden

Starte PsExec möglichst von einem gehärteten Administrationsgerät. Ein normaler Arbeitsplatzcomputer mit E Mail, Browser und alltäglicher Software ist kein idealer Ausgangspunkt für weitreichende Remotezugriffe.

Rechte möglichst klein halten

Nutze kein Konto mit mehr Berechtigungen als erforderlich. Ein separates Administratorkonto für einen begrenzten Gerätekreis ist sicherer als ein Konto, das die gesamte Domäne verwalten kann.

Kennwörter nicht in Befehle oder Skripte schreiben

Lasse -p weg und verwende die verdeckte Abfrage. Für wiederkehrende Automatisierungen sind verwaltete Identitäten, zentrale Softwareverteilung, PowerShell Remoting mit passender Authentifizierung oder andere Verwaltungslösungen besser geeignet als ein fest eingetragenes Kennwort.

Jeden Massenbefehl zuerst auf einem Testgerät prüfen

Ein Tippfehler in einem Neustart, Löschbefehl oder Installationsparameter kann viele Computer gleichzeitig betreffen. Prüfe Befehl, Zielpfad, Benutzerkontext, Rückgabecode und Wiederholbarkeit zuerst auf einem Testsystem.

Protokollierung und Überwachung aktiv lassen

PsExec Aufrufe sollten in einer professionellen Umgebung nachvollziehbar sein. Dazu gehören die Prozessüberwachung, Dienstereignisse, Anmeldeereignisse und Meldungen der Endpoint Security Lösung. Ungewöhnliche PsExec Aktivitäten von normalen Benutzergeräten sollten untersucht werden.

Temporären Dienst nach Fehlern kontrollieren

Bei einem normalen Abschluss bereinigt PsExec seine Komponenten. Nach einem Absturz oder einer blockierten Verbindung können PSEXESVC und die zugehörige Datei zurückbleiben. Kontrolliere und entferne sie nur nach einer eindeutigen Prüfung.

PsExec, PowerShell Remoting oder Remotedesktop: Was ist besser?

Das passende Werkzeug hängt von der Aufgabe ab. PsExec ist besonders stark bei schnellen Einzelbefehlen und beim Start im Systemkonto. PowerShell Remoting eignet sich besser für strukturierte Administration und Automatisierung. Remotedesktop ist die richtige Wahl, wenn Du eine vollständige grafische Sitzung benötigst.

MerkmalPsExecPowerShell RemotingRemotedesktop
HauptzweckProzess oder Konsolenbefehl startenStrukturierte Remoteadministration und SkriptingGrafischen Windows Desktop bedienen
Vorbereitung auf dem ZielKein dauerhaft installierter PsExec Client, aber SMB und Verwaltungszugriff erforderlichWinRM und passende Firewallregeln erforderlichRemotedesktop muss aktiviert und erlaubt sein
AusgabeTextausgabe und ExitcodePowerShell Objekte und TextGrafische Oberfläche
SystemkontoEinfach über -sNur mit zusätzlicher Konfiguration oder geplantem TaskKeine normale Benutzeranmeldung als SYSTEM
Automatisierung vieler GeräteMöglich, aber nur mit sorgfältiger ZielkontrolleSehr gut geeignetKaum geeignet
Empfohlener EinsatzSchnelle Diagnose, Einzelbefehl, SystemkontextWiederkehrende Administration und umfangreiche SkripteInteraktive GUI Aufgaben

PsExec benötigt kein WinRM. Das ist hilfreich, wenn WinRM noch nicht vorbereitet ist. Für eine dauerhafte Administrationsstrategie solltest Du dennoch prüfen, ob PowerShell Remoting, Windows Admin Center, Intune, eine Softwareverteilung oder eine andere zentrale Lösung besser steuerbar und leichter zu überwachen ist.

FAQ zu PsExec

FAQ zu PsExec

Was ist PsExec einfach erklärt?

PsExec ist ein Befehlszeilenwerkzeug, mit dem Du Prozesse lokal oder auf entfernten Windows Computern startest. Es kann Konsolenausgaben zurückgeben und Programme bei Bedarf im lokalen Systemkonto ausführen.

Muss PsExec auf dem Zielcomputer installiert werden?

Nein. Du musst PsExec nicht dauerhaft auf dem Zielcomputer installieren. Bei einem Remoteaufruf erstellt das Tool vorübergehend einen Dienst, startet darüber den gewünschten Prozess und entfernt die Komponente nach einem normalen Abschluss wieder.

Welche Ports benötigt PsExec?

Für den typischen Remoteeinsatz müssen insbesondere TCP 445 für SMB und TCP 135 für RPC zwischen Verwaltungscomputer und Zielsystem erreichbar sein. Öffne diese Ports nur in vertrauenswürdigen Netzen und niemals direkt aus dem Internet.

Braucht PsExec WinRM?

Nein. PsExec ist nicht von WinRM abhängig. Es verwendet Windows Freigaben und Verwaltungsfunktionen. Für PowerShell Remoting wird WinRM dagegen normalerweise benötigt.

Wie starte ich mit PsExec eine Eingabeaufforderung als SYSTEM?

Öffne ein administratives Terminal im PsExec Ordner und führe PsExec.exe -i -s cmd.exe aus. Prüfe den Kontext anschließend mit whoami und schließe die Konsole nach dem Test mit exit.

Warum meldet PsExec Zugriff verweigert?

Häufig fehlen Administratorrechte auf dem Zielcomputer, das Terminal wurde nicht erhöht gestartet, ADMIN$ ist nicht erreichbar oder die Remote UAC filtert ein lokales Administratorkonto. Auch Sicherheitsrichtlinien können den temporären Dienst blockieren.

Ist PsExec ein Virus?

Nein. Das originale PsExec ist ein legitimes Verwaltungswerkzeug. Weil ähnliche Funktionen auch bei Angriffen eingesetzt werden können, erkennen oder blockieren Sicherheitsprogramme das Tool teilweise. Prüfe deshalb immer Herkunft, Signatur, Aufruf und Einsatzzweck.

Kann ich PsExec ohne Administratorrechte verwenden?

Für die typische Remoteausführung und den Start im Systemkonto benötigst Du Administratorrechte. Ohne diese Rechte kann PsExec weder auf die administrative Freigabe zugreifen noch den erforderlichen temporären Dienst auf dem Zielcomputer erstellen.

Wie verhindere ich ein sichtbares Kennwort im PsExec Befehl?

Gib das Konto mit -u an und lasse -p weg. PsExec fordert das Kennwort dann verdeckt an. Für automatisierte Abläufe solltest Du keine Kennwörter im Klartext speichern, sondern eine dafür geeignete zentrale Verwaltungslösung verwenden.

Funktioniert PsExec über das Internet?

Technisch benötigt PsExec Netzwerkzugriff auf Windows Verwaltungsdienste. Du solltest TCP 135 und 445 aber niemals direkt aus dem Internet veröffentlichen. Verwende für entfernte Standorte eine abgesicherte VPN Verbindung oder eine dafür vorgesehene Verwaltungsplattform.

Was ist der Unterschied zwischen PsExec und PowerShell Remoting?

PsExec startet einen Prozess über SMB und Windows Verwaltungsfunktionen und eignet sich gut für schnelle Einzelbefehle oder den Systemkontext. PowerShell Remoting verwendet WinRM, liefert strukturierte PowerShell Objekte und ist für umfangreiche Automatisierung meist besser geeignet.

Fazit: PsExec gezielt und kontrolliert einsetzen

PsExec ist ein sehr leistungsfähiges Tool für die Windows Administration. Du kannst damit Remoteprozesse starten, Konsolenbefehle (CMD oder PowerShell) ausführen, Programme auf ein Zielsystem kopieren und Aufgaben im lokalen Systemkonto testen. Besonders bei einer schnellen Diagnose oder einem einzelnen Verwaltungsbefehl spart PsExec viel Zeit.

Die einfache Bedienung darf aber nicht über die erforderlichen Sicherheitsmaßnahmen hinwegtäuschen. Verwende PsExec nur mit genehmigten Konten, auf vertrauenswürdigen Verwaltungscomputern und in geschützten Netzen. Vermeide bitte Kennwörter in Befehlszeilen, teste Änderungen zuerst auf einem einzelnen Gerät und kontrolliere Warnungen Deiner Sicherheitslösung. Für häufige oder großflächige Automatisierungen ist eine zentral verwaltete Lösung oder PowerShell Remoting meist die bessere langfristige Wahl.