PsExecはリスト内の2番目のリモートコンピュータをプログラム名として扱います

PsExecはリスト内の2番目のリモートコンピュータをプログラム名として扱います

PsExec は特定のサーバーで実行すると非常に奇妙な動作をする

PsExec を使用して複数のリモート マシンでプログラムを実行すると、ほとんどの場合、問題なく動作します。 同じコマンドを 1 台の特定のマシンで実行すると、コンマ区切りのリストで指定された 2 番目のサーバーがプログラム名のように扱われます。

リモート サーバーへの呼び出しは次のとおりです。

psexec \\server11111,server11112 /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

出力は次のようになります。

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

このコマンドは、開発マシンで実行すると正常に動作します。ただし、Windows 2012 を実行しているサーバーから同じコマンドを実行すると失敗し、上記のような出力が表示されます。

答え1

さらに詳しくパトリック答え、形式でサーバーをリストする代わりに\\computer[,computer2[,...]、テキスト ファイルからのコンピューターのリストを使用できます。

ドキュメントからpsexec( まで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.

computers.txtつまり、作業しているディレクトリに、コンピュータ名が記入されたテキスト ファイル (たとえば ) を作成できます。

computer
computer2
computer3

次に、次のコマンドを使用します。

psexec @computers.txt /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

psexec次に、 で指定された順序で各コンピューター上でコマンドを実行しますcomputers.txt

答え2

コマンドラインからではなくリストを呼び出す:

psexec @ListOfServers /accepteula -u "Domain\User" -p "password" -i 2 -d cmd.exe /c "wmic bios getsmbiosbiosversion"

答え3

カンマの後に非表示文字があるのか​​もしれません。私も全く同じ結果になりました

PsExec は <server1> で <server2> を起動できませんでした:

カンマの後にスペースがあるとエラーになります。

関連情報