私はx86またはx64ビットマシンかどうかによって正しいEXEを実行するためにいくつかのロジックを追加する必要がある非常に大きな既存のバッチファイルがあります。 PowerShellを使用することはできません。なぜなら、何らかの理由でこれらのマシンのほとんどが擬似的に無効になっているからです。バッチファイル - リモートコンピュータ変数を取得
PSEXECを使用して、リモートからシステム変数PROCESSOR_ARCHITECTUREをフェッチし、出力からローカルシステム変数を作成します。
私はWin10x64 CMDプロンプトから次のコマンドを実行した場合:
C:\PsTools>c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^%PROCESSOR_ARCHITECTURE^%
私が正しいリモートのx86値を得るが、それを何もしないことができます。
x86
cmd exited on TEST-Win7x86 with error code 0
。
FOR /F "delims=" %i IN ('c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^%PROCESSOR_ARCHITECTURE^%') DO set proc=%i
私は地元のAMD64値を取り戻すよ::
cmd exited on TEST-Win7x86 with error code 0.
C:\PsTools>set proc=AMD64
は、私は変数に出力を得るために、テスト this methodを試してみました。
誰かが私が間違っていることを察知していますか?
ありがとうございます!
-Matt
バッチファイル内で使用されているときに 'for'変数の'% '記号を二重にする必要があることをご存知ですか?また、 '^%%PROCESSOR_ARCHITECTURE ^^ %%'を文字列の上に '^%PROCESSOR_ARCHITECTURE ^% 'という文字列を渡すために' for/F'ループに書く必要があると思います。 – aschipfl
また、 '' psexec \\ remotepc powershell "$ env:processor_architecture" 'を実行することで、あいまいさを示します。あるいは、 'psexec'をスキップしてリモートのWMIクエリを使うこともできます。 '%I"を設定します ' – rojo
私はPowerShellメソッドをほとんど使用しますが、この場合はこれらのコンピュータにはPowerShellの動作を妨げるものがあります。私はWMICを使ってそれを取り出すことを考えなかった。私は次回は感謝します! – EvilBetty