想要看chkdsk的結果時,除了可以使用事件檢視器搜尋應用程式chkdsk(自己執行)或者wininit(系統執行),在網路上找到一個方法可以用powershell將log檔抓取出來成文字檔,如此可以方便使用email傳送或自動化。此方法只適用windows vista以上版本,方法如下:
windows鍵+R執行powershell.exe
鍵入
get-winevent -FilterHashTable @{logname="Application"; id= 1001,26214} | ?{$_.providername -match "chkdsk" -or $_.providername -match "wininit"} | fl timecreated, message | out-file C:\chkdskresult.txt
檔案會生成在 C:\chkdskresult.txt
可以自己類推代換路徑
另外如果只要看昨天的事件
先鍵入
$yesterday = (get-date) = (new-timespan -day 1)
再鍵入
get-winevent -FilterHashTable @{logname="Application"; id= 1001,26214; StartTime=$yesterday} | ?{$_.providername -match "chkdsk" -or $_.providername -match "wininit"} | fl timecreated, message | out-file C:\chkdskresult.txt
將上面指令建立一個文字檔並命名為chkdskresult.ps1
再於工作排程器啟動powershell.exe
新增引數 -File "剛剛chkdskresult.ps1的路徑" (前後要保留"")
最後要於powershell內執行Set-ExecutionPolicy RemoteSigned指令並選擇yes (才可開啟指令碼執行)
配合使用email傳送可參考我之前文章
另外chkdsk 搭配 /x 引數可強制卸載磁碟開始掃描
參考資料
自己
http://www.sevenforums.com/tutorials/96938-check-disk-chkdsk-read-event-viewer-log.html
設定時間參數
http://ss64.com/ps/get-winevent.html
可用Powershell排程
http://mqjing.blogspot.tw/2009/01/script-powershell.html
系統上已停用指令碼執行
http://taien.idv.tw/2012/07/25/powershell-%E6%AA%94%E6%A1%88%E7%84%A1%E6%B3%95%E8%BC%89%E5%85%A5%EF%BC%8C%E5%9B%A0%E7%82%BA%E9%80%99%E5%80%8B%E7%B3%BB%E7%B5%B1%E4%B8%8A%E5%B7%B2%E5%81%9C%E7%94%A8%E6%8C%87%E4%BB%A4%E7%A2%BC%E5%9F%B7.html
篩選複數ID
http://technet.microsoft.com/en-us/library/ee177028.aspx
http://social.technet.microsoft.com/Forums/scriptcenter/en-US/a637d5c3-6b36-474f-8092-bcdf0f686e3a/multiple-values-for-a-property-in-a-whereobject-filter?forum=ITCG
http://stackoverflow.com/questions/17691893/filterhashtable-filter-by-event-code
out-file
http://technet.microsoft.com/en-us/library/hh849882.aspx
get-content
http://stackoverflow.com/questions/17434151/writing-new-lines-to-a-text-file-in-powershell
replace
http://stackoverflow.com/questions/3403217/how-to-replace-multiple-strings-in-a-file-using-powershell
沒有留言:
張貼留言