2015-11-05 58 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

回答