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> を起動できませんでした:
カンマの後にスペースがあるとエラーになります。