技術文章 · IT 指令工具箱

Windows 維運指令:服務、事件記錄、排程、程序與系統修復

整理 Get-Service、sc.exe、Get-WinEvent、schtasks、tasklist、taskkill、SFC、DISM 與 Windows 日常維運指令。

作者 Steve Chen · 發布  · 約 7 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

服務起不來、排程沒跑或系統檔損壞時,先查狀態與事件,再決定要不要重啟或修復。直接重開服務可能讓證據消失,也可能中斷其他工作階段。

26 組範例Windows 10Windows 11Windows Server查核日期:2026-08-11
動手前:Stop-Service、taskkill、SFC、DISM 與排程變更都可能影響正式服務。先確認相依服務、維護窗、備份與回復方式;不要對不熟悉的系統程序強制結束。

服務與程序

列出正在執行的服務PowerShell

Get-Service | Where-Object Status -eq Running | Sort-Object DisplayName

先確認真正的 ServiceName。

查看指定服務PowerShell

Get-Service -Name W32Time

可看到 Running、Stopped 與啟動能力。

查看服務完整設定命令提示字元

sc.exe qc W32Time

可看到啟動帳號、binary path 與相依性。

查看服務目前狀態命令提示字元

sc.exe queryex W32Time

queryex 會包含 PID 等資訊。

重新啟動指定服務系統管理員 PowerShell

Restart-Service -Name W32Time -WhatIf

先用 -WhatIf;確認影響後才正式執行。

查看程序命令提示字元

tasklist

可用 /FI 篩選,避免輸出太長。

依映像名稱找程序命令提示字元

tasklist /FI "IMAGENAME eq nginx.exe"

同名程序可能有多個 PID。

查看程序命令列PowerShell

Get-CimInstance Win32_Process | Select-Object ProcessId, Name, CommandLine

命令列可能含敏感參數,分享前遮蔽。

優雅停止一般程序PowerShell

Stop-Process -Id 1234 -WhatIf

先確認 PID 與相依服務;不要直接加 -Force。

事件記錄與時間篩選

查看 System 最新 50 筆PowerShell

Get-WinEvent -LogName System -MaxEvents 50

依時間由新到舊。

只看系統錯誤PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddHours(-2)}

Level 2 是 Error;還要搭配 Warning 與事件上下文。

查指定 ProviderPowerShell

Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'; StartTime=(Get-Date).AddDays(-1)}

Provider 名稱需與事件實際值一致。

查指定 Event IDPowerShell

Get-WinEvent -FilterHashtable @{LogName='System'; Id=7031; StartTime=(Get-Date).AddDays(-7)}

相同 Event ID 在不同 log/provider 的語意可能不同。

列出事件 Log 名稱PowerShell

Get-WinEvent -ListLog * | Where-Object RecordCount -gt 0 | Sort-Object LogName

很多 Operational log 預設未啟用。

匯出篩選結果PowerShell

Get-WinEvent -FilterHashtable @{LogName='System'; StartTime=(Get-Date).AddHours(-1)} | Export-Csv .\system-events.csv -NoTypeInformation -Encoding utf8

CSV 不一定保留完整訊息格式;原始 EVTX 可另存。

查看單筆事件完整內容PowerShell

Get-WinEvent -LogName System -MaxEvents 1 | Format-List *

適合找 Properties 與 XML 細節。

排程與系統修復

列出排程摘要命令提示字元

schtasks /query /fo table

以系統管理員執行可看到更多工作。

查看排程詳細資訊命令提示字元

schtasks /query /tn "\Company\Nightly Backup" /v /fo list

確認 Last Run Result、執行帳號與下次時間。

手動觸發排程系統管理員 CMD

schtasks /run /tn "\Company\Nightly Backup"

會立即執行,先確認不與正式工作重疊。

用 PowerShell 查看失敗排程PowerShell

Get-ScheduledTask | Get-ScheduledTaskInfo | Where-Object LastTaskResult -ne 0

部分正常狀態碼不是 0,需查該工作與 API 定義。

檢查系統檔系統管理員 CMD

sfc /scannow

可能耗時,完成後看 CBS.log 與結果,不要中途中斷。

檢查 Windows 映像系統管理員 CMD

DISM /Online /Cleanup-Image /ScanHealth

ScanHealth 只掃描;可能需要一段時間。

修復 Windows 映像系統管理員 CMD

DISM /Online /Cleanup-Image /RestoreHealth

可能連 Windows Update 或需要指定來源;安排維護時間。

查看開機時間PowerShell

(Get-CimInstance Win32_OperatingSystem).LastBootUpTime

快速判斷是否近期重開。

查看時間服務狀態命令提示字元

w32tm /query /status

網域環境還要確認時間階層與來源。

查看時間來源命令提示字元

w32tm /query /source

不要未查架構就把 DC 指到任意公用 NTP。

怎麼確認有做對

  • 重啟前後記錄服務狀態、PID 與相同時間範圍的事件。
  • 排程要看 Last Run Result,也要檢查實際輸出檔或業務結果。
  • SFC/DISM 完成後保存結果與 log,再決定是否重開。

常見錯誤

  • 一看到服務停止就直接重啟,沒先查事件。
  • 用 taskkill /F 結束不熟悉的系統程序。
  • 只看排程顯示 Ready 就認定任務成功。
  • 把 SFC/DISM 當成所有 Windows 問題的第一步。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章