2016-05-17 85 views
0

我有一個非常大的預先存在的批處理文件,我需要添加一些邏輯來運行正確的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

+1

您是否知道在批處理文件中使用時,您必須將''''''變量的符號加倍?另外,我認爲你需要在'for/F'循環中編寫'^^ %% PROCESSOR_ARCHITECTURE ^^ %%'來通過字符串'^%PROCESSOR_ARCHITECTURE ^%'來傳遞... – aschipfl

+0

你也可以避免通過執行'psexec \\ remotepc powershell「$ env:processor_architecture」'執行百分比符號歧義。或者,您可以跳過'psexec'並使用遠程WMI查詢。 ('wmic/node:remotepc os獲取osarchitecture/value^| find「=」')設置「%I」' – rojo

+0

大部分時間我都使用PowerShell方法,但在這種情況下,這些電腦有一些阻止PowerShell工作的地方。我沒有想到使用WMIC來獲取它。我會記住下次,謝謝! – EvilBetty

回答

0

與此大半天搞亂後,我想我已經將它提交了這個問題後不久,想通了。由於某種原因,我不得不把胡蘿蔔加倍。我不完全確定爲什麼我想要嘗試它或爲什麼它可以工作,但我現在正在得到正確的輸出。

C:\PsTools>FOR /F %i IN ('c:\pstools\PSEXEC.exe \\TEST-Win7x86 cmd /c echo ^^%PROCESSOR_ARCHITECTURE^^%') DO set proc=%i 

輸出:

cmd exited on TEST-KW-O3040MD with error code 0. 

C:\PsTools>set proc=x86 

並且隨着aschipfl糾正如下,這是批處理腳本中正確的上下文。謝謝aschipfl!

FOR /F %%i IN ('"\\Server\Shared Folder\PSEXEC.exe" \\TEST-Win7x86 cmd /c echo ^^%%PROCESSOR_ARCHITECTURE^^%%') DO set PROC=%%i 
+0

這隻能在您直接在命令提示符('cmd')中執行的情況下才能使用;在一個批處理文件中,您需要按照我已經建議的方式將'for'變量'%i'的'%'符號加倍,並且還需要在'IN(...)'部分加上'%'符號... – aschipfl

+0

那麼,在命令行中工作,但現在它已經在腳本中破壞了。 運行此命令: 。 。 結果爲'%'i IN(''\\ Server \ Shared Folder \ PSEXEC.exe'\\%CNAME%cmd/c echo ^%PROCESSOR_ARCHITECTURE ^%')DO set PROC = %% i' Results再次在當地的AMD64。加倍胡蘿蔔似乎殺死了它。 如果我只知道雙胡蘿蔔如何正確逃脫它:( – EvilBetty

+0

FOR/F %%我在('「\\服務器\共享文件夾\ PSEXEC.exe」\\ TEST-Win7x86 cmd/c echo ^^ %% PROCESSOR_ARCHITECTURE ^^ %%')DO set PROC = %% i' should work ... – aschipfl