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.
Inhaltsverzeichnis
- Was ist PsExec?
- Wie funktioniert PsExec bei einem Remotezugriff?
- Welche Voraussetzungen braucht PsExec?
- PsExec herunterladen und unter Windows vorbereiten
- PsExec Syntax einfach erklärt
- PsExec Schritt für Schritt auf einem Remotecomputer verwenden
- Praktische PsExec Befehle für Administratoren
- Typische PsExec Fehler und passende Lösungen
- PsExec sicher verwenden: wichtige Regeln
- PsExec, PowerShell Remoting oder Remotedesktop: Was ist besser?
- FAQ zu PsExec
- Fazit: PsExec gezielt und kontrolliert einsetzen
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?
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:
- PsExec authentifiziert sich mit Deinen aktuellen Anmeldedaten oder mit dem Konto, das Du über
-uangibst. - Das Tool prüft den Zugriff auf den Zielcomputer und dessen administrative Freigabe.
- PsExec überträgt die benötigte Dienstkomponente auf das Zielsystem.
- Der temporäre Dienst
PSEXESVCwird erstellt und gestartet. - Der Dienst startet den angegebenen Befehl im gewünschten Benutzerkontext.
- 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,systeminfooder 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.

Ö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 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
| Parameter | Bedeutung | Typischer Einsatz |
|---|---|---|
\\PC01 | Legt den Zielcomputer fest | Remoteausführung auf PC01 |
@computer.txt | Liest mehrere Zielcomputer aus einer Textdatei | Gleichen Befehl auf einer genehmigten Geräteliste ausführen |
-u | Gibt ein anderes Benutzerkonto an | FIRMA\AdminUser oder PC01\LokalerAdmin |
-p | Übergibt ein Kennwort | Besser weglassen, damit PsExec das Kennwort verdeckt abfragt |
-s | Startet den Prozess im lokalen Systemkonto | Dienstkontext testen oder administrative Wartung ausführen |
-h | Verwendet das erhöhte Administratortoken des Kontos, sofern verfügbar | UAC geschützte Verwaltungsaufgabe mit einem Administratorkonto ausführen |
-i | Startet den Prozess interaktiv in einer Sitzung | Konsole oder grafisches Testprogramm in einer bestimmten Sitzung öffnen |
-c | Kopiert das angegebene Programm auf das Zielsystem | Ein lokales Diagnosewerkzeug remote ausführen |
-f | Erzwingt das Kopieren einer bereits vorhandenen Datei | Vorhandene Programmdatei auf dem Zielcomputer ersetzen |
-v | Kopiert nur eine neuere Datei oder eine Datei mit höherer Version | Unnötige Übertragungen vermeiden |
-d | Wartet nicht auf das Ende des gestarteten Prozesses | Länger laufende unbeaufsichtigte Aufgabe anstoßen |
-w | Setzt das Arbeitsverzeichnis auf dem Zielcomputer | Programm mit relativen Konfigurationspfaden starten |
-n | Legt ein Verbindungstimeout in Sekunden fest | Bei nicht erreichbaren Computern schneller abbrechen |
-r | Verwendet einen selbst gewählten Namen für den temporären Dienst | Konflikt mit einem hängen gebliebenen Standarddienst umgehen |
-accepteula | Akzeptiert die Lizenzbedingungen ohne Dialog | Genehmigte Automatisierung nach vorheriger Prüfung |
-nobanner | Blendet 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
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
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
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:
- Das lokale Terminal läuft als Administrator.
- Das verwendete Konto ist auf dem Zielcomputer tatsächlich Administrator.
- Der Zugriff auf
\\PC01\ADMIN$funktioniert mit demselben Konto. - Es besteht keine ältere SMB Verbindung zum Zielcomputer mit anderen Anmeldedaten.
- Die Benutzerkontensteuerung filtert kein lokales Administratorkonto bei einer Remoteanmeldung.
- 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.
| Merkmal | PsExec | PowerShell Remoting | Remotedesktop |
|---|---|---|---|
| Hauptzweck | Prozess oder Konsolenbefehl starten | Strukturierte Remoteadministration und Skripting | Grafischen Windows Desktop bedienen |
| Vorbereitung auf dem Ziel | Kein dauerhaft installierter PsExec Client, aber SMB und Verwaltungszugriff erforderlich | WinRM und passende Firewallregeln erforderlich | Remotedesktop muss aktiviert und erlaubt sein |
| Ausgabe | Textausgabe und Exitcode | PowerShell Objekte und Text | Grafische Oberfläche |
| Systemkonto | Einfach über -s | Nur mit zusätzlicher Konfiguration oder geplantem Task | Keine normale Benutzeranmeldung als SYSTEM |
| Automatisierung vieler Geräte | Möglich, aber nur mit sorgfältiger Zielkontrolle | Sehr gut geeignet | Kaum geeignet |
| Empfohlener Einsatz | Schnelle Diagnose, Einzelbefehl, Systemkontext | Wiederkehrende Administration und umfangreiche Skripte | Interaktive 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
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.
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.
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.
Nein. PsExec ist nicht von WinRM abhängig. Es verwendet Windows Freigaben und Verwaltungsfunktionen. Für PowerShell Remoting wird WinRM dagegen normalerweise benötigt.
Ö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.
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.
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.
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.
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.
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.
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.

Neueste Kommentare