从批处理中使用PsExec并捕获错误

时间:2015-11-05 17:29:35

标签: windows batch-file remote-server psexec

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

我怎样才能记录" PsExec的输出,当服务器没有响应时?它应该只是与#34;离线"或"错误"在我的输出文件中。

我的目标是运行一个包含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.

1 个答案:

答案 0 :(得分:1)

psexec -n 5设置5秒超时,退出代码为1460ERROR_TIMEOUT)。