PsExec behandelt den zweiten Remotecomputer in der Liste als Programmnamen

PsExec behandelt den zweiten Remotecomputer in der Liste als Programmnamen

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 psexecDokumentation (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"

psexecfü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.

verwandte Informationen