萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

善用 Windows 腳本程式設計:自動化備份與格式化輸出系統事件日誌

前言:日誌是系統健康與安全的「黑盒子」

優秀的 NT 網管會定期備份系統日誌 (System、Application、Security 等) 以利事後稽核、入侵偵測、效能分析。手工「另存為」不僅繁瑣,輸出格式難以處理。利用 Resource Kit 工具 dumpel.exe 搭配 WSH (VBScript/JScript) 實現排程自動化、格式化 HTML 輸出、可選列印,大幅提升運維效率。

核心工具:dumpel.exe 參數速查

dumpel -f <檔案> [-s \\伺服器] [-l <日誌類型>] [-m <事件來源>] [-e <事件ID列表>] [-r] [-t] [-d <天數>]
  • -f:輸出檔案路徑/名稱。
  • -s:遠端伺服器 (需 Admin 權限)。
  • -l:日誌類型 — system、application、security、DNS、File Replication 等。
  • -m:依事件來源篩選。
  • -e:依事件 ID 篩選。
  • -d N:僅匯出最近 N 天記錄。

範例:dumpel -f security.log -s \\server01 -l security

自動化腳本實作:logreport.js (JScript)

功能規格

  • 目標伺服器:\\server (可為本機)。
  • 備份根目錄:\\data\backup。
  • 輸出檔名格式:<電腦名>_<月份>_<日期>_<日誌類型>.html (中文月份/星期)。
  • 涵蓋三大核心日誌:System、Application、Security。
  • 輸出 HTML 含標題、日期、預格式化原始日誌內容,便於閱讀/列印/封存。
  • 排程任務 / at 指令每日 00:00 自動執行。

關鍵程式碼片段 (完整碼見原文)

// 月份/星期中文化對照表
var month = ["", "一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
var days  = ["", "星期日","星期一","星期二","星期三","星期四","星期五","星期六"];

// 取得電腦名、日期、路徑
var ws = WScript.CreateObject("WScript.Shell");
var compName = ws.ExpandEnvironmentStrings("%COMPUTERNAME%");
var netDrive = "\\\\data\\backup";
var today = new Date();
var logDay = today.getDate();
var logMonth = today.getMonth() + 1; // JScript 月份 0-based

var logTypes = ["system", "application", "security"];

// 1. 呼叫 dumpel 匯出原始 .log
for (var i=0; i

部署與排程

  1. 將 logreport.js 與 dumpel.exe 放置同一目錄 (如 C:\AdminScripts\)。
  2. 測試:雙擊執行,確認 \\data\backup 產生三份 .htm。
  3. 排程自動化:
at \\server /every:M,T,W,Th,F,S,Su 0:00 "C:\AdminScripts\logreport.js"

或使用圖形化「排程工作」精靈設定每日觸發。

進階擴充建議

  • 郵件通知:腳本結束時用 CDO/CDOSYS 寄送摘要/附件給管理員。
  • 集中化管理:中央日誌伺服器 (Syslog/Windows Event Forwarding) + 腳本僅負責格式化/分發。
  • 日誌保留策略:配合批次檔定期清理超過 N 天的 .log/.htm,避免磁碟爆滿。
  • 安全性:腳本執行帳號最小權限 (僅需網路讀取目標伺服器日誌、寫入備份共享)。

結語

以不到百行腳本替代繁瑣手工操作,實現日誌「日備份、中文化、HTML 格式化、可列印、可排程」。這正是系統管理員從「手工操作者」進化為「自動化工程師」的關鍵一步。VBScript/JScript 配合 WMI/ADSI/COM 元件,更可構建完整自動化運維生態系。

copyright © 萬盛學電腦網 all rights reserved