Problem
Warum funktioniert PSEXEC (aus den Sysinternal tools) scheinbar sporadisch nicht? Zum Beispiel funktioniert der Befehl:
psexec \\SERVER net start <FOOBAR>
fehlerfrei, aber dieser Befehl hingegen
psexec \\SERVER rd /Q /S <C:\FOOBAR>
funktioniert nicht und gibt die scheinbar sinnlose Fehlermeldung „Das System kann die angegebene Datei nicht finden.“ zurück.
Lösung
PSEXEC führt im Standardfall nur Prozesse aus. „net“ ist ein normales Programm (net.exe), also ein Startbarer Prozess. „rd“ hingegen, wie auch „dir“, „type“, „find“ und so weiter sind keine externen Programme, sondern Befehle der Shell, also Kommandos des Prozesses CMD. Um diese auszuführen, muss man also eine CMD-Shell via PSEXEC starten und dieser Shell dann die Kommandos übergeben.
Das Beispiel funktioniert fehlerfrei so:
psexec \\SERVER cmd /c rd /Q /S <C:\FOOBAR>
Der Parameter „/c“ für CMD.EXE Führt den Befehl in der Eingabe einfach aus und endet dann.