PsExec verhält sich sehr seltsam, wenn es auf einem bestimmten Server ausgeführt wird
Wenn ich PsExec verwende, um ein Programm auf mehreren Remote-Rechnern auszuführen, funktioniert es in den meisten Fällen einwandfrei. Wenn ich denselben Befehl auf einem bestimmten Rechner ausführe, behandelt es den zweiten Server in der durch Kommas getrennten Liste wie einen Programmnamen.
Hier ist mein Aufruf an die Remote-Server:
psexec \\server11111,server11112 /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
Und hier ist die Ausgabe:
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
PsExec could not start server11112 on server11111:
The system cannot find the file specified
Dieser Befehl funktioniert einwandfrei, wenn ich ihn auf meinem Entwicklungscomputer ausführe. Wenn ich jedoch denselben Befehl von einem Server aus ausführe, auf dem Windows 2012 läuft, schlägt er fehl und ich erhalte die obige Ausgabe.
Antwort1
Um weiter darauf einzugehenPatrick'SAntwort, statt der Auflistung von Servern mit dem \\computer[,computer2[,...]
Format können Sie eine Liste von Computern aus einer Textdatei verwenden.
Aus der psexec
Dokumentation (bis psexec /?
):
Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]
@file PsExec will execute the command on each of the computers listed
in the file.
Das heißt, Sie können in Ihrem Arbeitsverzeichnis eine Textdatei (zum Beispiel computers.txt
) erstellen und diese mit Computernamen füllen:
computer
computer2
computer3
Anschließend können Sie den folgenden Befehl verwenden:
psexec @computers.txt /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
psexec
führt den Befehl dann auf jedem Computer in der in angegebenen Reihenfolge aus computers.txt
.
Antwort2
Rufen Sie eine Liste nicht über die Kommandozeile auf:
psexec @ListOfServers /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"
Antwort3
Vielleicht haben Sie ein nicht angezeigtes Zeichen nach dem Komma. Ich bekomme genau das gleiche
PsExec konnte <Server2> auf <Server1> nicht starten:
Fehler, wenn nach dem Komma ein Leerzeichen steht.