如何在Windows Server 2012 R2 Datacenter上创build低磁盘空间警报

我有一个在Azure中运行的Windows Server 2012 R2 Datacenter虚拟机。

最近,我的一个磁盘空间不足。

如何设置通知系统以在磁盘空间中的某个磁盘驱动器运行较低时提醒我?

唯一想到的是写一个powershell脚本,但我想知道是否有更好的方法来做到这一点,例如通过在Windows服务器的服务器pipe理器/仪表板上的东西? 我看不出有什么办法通过Azure来做到这一点。

谢谢!

这在这里会做雅:

事件ID 2013(磁盘处于或接近容量)未logging

总结一下,请确保您在事件日志中logging磁盘空间警报:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters] "DiskSpaceThreshold"=dword:0000000a "LowDiskSpaceMinimum"=dword:00000000 

(你必须添加这两个,而不只是一个或另一个。)

那么你必须附加一个任务的事件。 这里有一些你可以导入到任务调度器的XML,它将把上述任务附加到上述事件中:

 <?xml version="1.0" encoding="UTF-8"?> <Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.3"> <RegistrationInfo> <Date>2013-02-05T14:37:17.165247</Date> <Author>[YourDomain]\[YourUserName]</Author> <Description>Send an emailed warning when a low disk space event is recorded.</Description> </RegistrationInfo> <Triggers> <EventTrigger> <Enabled>true</Enabled> <Subscription>&amp;lt;QueryList&amp;gt;&amp;lt;Query Id="0" Path="System"&amp;gt;&amp;lt;Select Path="System"&amp;gt;*[System[Provider[@Name='srv'] and EventID=2013]]&amp;lt;/Select&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/QueryList&amp;gt;</Subscription> </EventTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-20</UserId> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT1H</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <SendEmail> <Server>smtpServer.YourCompany.co.uk</Server> <Subject>Low disk space warning on server: [ServerName]</Subject> <To>[email protected]</To> <From>[email protected]</From> <Body>Disk space is running low on server: [ServerName] - please investigate.</Body> <HeaderFields /> <Attachments /> </SendEmail> </Actions> </Task> 

您需要编辑SMTP服务器和其他variables以满足您的需求。 只要您的服务器发生该事件(磁盘空间不足),就会向您发送电子邮件。

值得注意的是,Server 2008,2012等应该自动默认以10%的速度生成此警报,因此可能不需要修改registry,除非您想要自定义而不是10%。


或者,您可以使用Powershell来完成。

 $Threshold = 10 #Percent Foreach($Disk In Get-CimInstance Win32_LogicalDisk | Where DriveType -EQ 3) { $PercentFree = [Math]::Round(($Disk.FreeSpace / $Disk.Size) * 100, 1) If ($PercentFree -LT $Threshold) { Send-MailMessage -From $From -To $To -Subject "Low Disk Space on $Servername" -Body "Low Disk Space on $Servername" -SmtpServer $SMTPServer } } 

安排,并间隔运行它。 (我只是嘲笑了我的头顶,但你明白了。)

您可以从VM外部通过调用VM外部的Powershell来检查VM的硬盘磁盘空间。 这是一篇关于如何使用远程PowerShell的好文章http://michaelwasham.com/windows-azure-powershell-reference-guide/introduction-remote-powershell-with-windows-azure/