2015-11-05 61 views
0

我需要在数百台服务器上运行命令,并且发现Sysinternals中的PsExec非常有用。但是,服务器关闭或未安装应用程序时会出现小问题。在这种情况下,错误不会记录到我的输出文件中。从批处理中使用PsExec并捕获错误

当服务器没有响应时,我如何“记录”PsExec的输出?它应该只是在我的输出文件中带有“离线”或“错误”的一行。

我的目标是运行800个服务器的列表,并获得一个包含800行的results.txt文件,以便将内容粘贴到Excel中并比较这些值。

我的剧本是这样的:

@echo off 
setlocal enabledelayedexpansion 

set OUTPUT_FILE=result.txt 
>nul copy nul %OUTPUT_FILE% 
for /f %%i in (servers.txt) do (
    for /f "tokens=1,2" %%x in ('psexec.exe \\%%i -u MyDomain\MyUsername -p MyPassword dspmqver -f 2') do (
     IF "%ERRORLEVEL%"=="0" (
      echo %%i %%y >>%OUTPUT_FILE% 
     ) ELSE (
      echo Error 
     ) 
    ) 
) 

任何帮助将非常感激。

问候

拉斯穆斯

编辑:

在一个失败的情况下将来自PSEXEC输出和一个正在运行的。

在一个离线服务器上,这显然达不到要求 - 输出:

psexec.exe \\hostname -u MyDomain\MyUsername -p MyUsername dspmqver -f 2 

PsExec v2.11 - Execute processes remotely 
Copyright (C) 2001-2014 Mark Russinovich 
Sysinternals - www.sysinternals.com 

Couldn't access hostname: 
Network path not found (translated from danish) 

Make sure that the default admin$ share is enabled on hostname 

在一个网络服务器,在脚本作品 - 输出。

psexec.exe \\hostname -u MyDomain\MyUsername -p MyUsername dspmqver -f 2 


PsExec v2.11 - Execute processes remotely 

Copyright (C) 2001-2014 Mark Russinovich 

Sysinternals - www.sysinternals.com 


Version:  7.5.0.4 
dspmqver exited on hostname with error code 0. 
+0

批量外部直接调用的psexec的输出是什么?包括错误级别 – Marged

+0

我刚刚对原始帖子进行了编辑以添加输出 - 无法在此处的评论中使用代码样式。 – RazziaDK

回答