批处理文件 - 获取远程计算机变量

时间:2016-05-17 22:42:11

标签: batch-file cmd psexec

我有一个非常大的预先存在的批处理文件,我需要添加一些逻辑来运行正确的EXE,具体取决于它是x86还是x64位机器。我无法使用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

我尝试测试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 个答案:

答案 0 :(得分: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