我可以安排在驅動器快滿時發送電子郵件嗎?
背景:我是一名開發人員,不情願地“照顧”部署了我的應用程序的機器。我的客戶是一家完全獨立的公司,他們付錢給我們為他們編寫程式碼——我們沒有共同的老闆或類似的東西。他們有系統管理員,但他們在不同的部門,當他們要求我認為系統管理員應該能夠為他們做的事情時,他們沒有得到他們要求的東西。實現這一點不在我的掌控之中。然後,我最終被要求編寫程式碼來做一些我懷疑受過訓練的人可以用幾行 powershell 或通過在對話框上打勾來設置的事情。這是安裝了 SQL 和 IIS 的 Windows Server 2003 設置。
這導致了今天的問題:如何知道驅動器已滿。(數據庫增長,導出的文件未清理,諸如此類。)理想情況下,一封電子郵件會發出“Drive E is at abc of xyz (84%)”。這很容易做到嗎?我當然不想編寫一個服務來監控磁碟空間和發送電子郵件——以前一定有人這樣做過。其中一個驅動器實際上是一個映射驅動器,代表另一台機器上的一個文件夾,這是值得的。
雖然許多答案都包括腳本(如果你走那條路,我也建議使用 powershell),你也可以使用 perfmon 執行警報。請參閱如何:使用 Windows Server 2003 中的性能日誌和警報功能配置低磁碟空間警報
請注意,您要執行的操作是執行 powershell 或 vbscript 向您發送電子郵件(或者更可取的是,在驅動器上執行一些基本的清理任務,然後發送電子郵件說明問題所在以及發布操作號碼是)
對於映射驅動器,您必須使用腳本。在WMI 計數器中使用的是win32_mappedlogicaldisk。(Get-WmiObject win32_mappedlogicaldisk).freespace。例如:
$mythreshold = 10GB Get-WmiObject win32_mappedlogicaldisk | select-object deviceid, freespace | foreach { if ($_.freespace -lt $mythreshold){ $from = "myaddr@mycompany.com" $to = "myaddr@mycompany.com" $subject = "Low Disk Space!" $body = "Free Space Remaining: " + $_.FreeSpace + "Drive" + $_.deviceid $smtpServer = "smtp.mycompany.com" $smtp = new-object Net.Mail.SmtpClient($smtpServer) $smtp.Send($from,$to,$subject,$body) } }
(之前的大部分程式碼都是從 squillman 複製過來的,否則我必須自己輸入這段程式碼)