我有一個非常大的預先存在的批處理文件,我需要添加一些邏輯來運行正確的EXE,具體取決於它是x86還是x64位機器。我無法使用PowerShell,因爲出於某種原因,他們在大多數這些機器上都禁用了僞禁用。批處理文件 - 獲取遠程計算機變量
我想要做的是使用PSEXEC從遠程獲取系統變量PROCESSOR_ARCHITECTURE,然後從輸出創建一個本地系統變量。
如果我運行從Win10x64 CMD提示此命令:
C:\PsTools>c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^%PROCESSOR_ARCHITECTURE^%
我得到正確的遠程值86,但不能用它做任何事情:
x86
cmd exited on TEST-Win7x86 with error code 0
。
我試圖測試this method讓輸出到一個變量:
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
。
任何人發現我做錯了什麼?
謝謝!
-Matt
您是否知道在批處理文件中使用時,您必須將''''''變量的符號加倍?另外,我認爲你需要在'for/F'循環中編寫'^^ %% PROCESSOR_ARCHITECTURE ^^ %%'來通過字符串'^%PROCESSOR_ARCHITECTURE ^%'來傳遞... – aschipfl
你也可以避免通過執行'psexec \\ remotepc powershell「$ env:processor_architecture」'執行百分比符號歧義。或者,您可以跳過'psexec'並使用遠程WMI查詢。 ('wmic/node:remotepc os獲取osarchitecture/value^| find「=」')設置「%I」' – rojo
大部分時間我都使用PowerShell方法,但在這種情況下,這些電腦有一些阻止PowerShell工作的地方。我沒有想到使用WMIC來獲取它。我會記住下次,謝謝! – EvilBetty