在没有SCOM或是第三方工具对服务器进行监控的话,我们只能手动进到服务去查看硬盘的使用情况。大家是否有碰到过因服务器硬盘空间不足,没及时发现,而导致服务停止?

下面给大家介绍一个好工具,利用PowerShell脚本,收集指定服务器的硬盘使用状态,如果达到设定的警报值,则发邮件通知给指定的一个,或多个管理员!

原脚本来自Technet脚本中心,经过我在不同环境中测试,效果不错,现分享给大家!

http://gallery.technet.microsoft.com/scriptcenter/Disk-Space-Report-Reports-98e64d65#content

使用方法:

1、下载附件脚本,修改脚本中以下内容:

1)脚本设定的***警告值为空间底于20%,红色警告值为空间底于10%,如果要修改,请将以下值修改为你想要的:

$percentWarning=20;

$percentCritcal=10;

2)修改收件人邮箱,即那个人或是那些人要收到通知邮件:

$users=[email protected]

如果需要给多个邮件人,请修改为:

$users=“[email protected]“,”[email protected]

3)修改服务器列表、报告生成目录

$reportPath="D:\script\";

此处用为存放生成的HTML报告文件,也建议将PS1文件也存于同一目录。

$computers=Get-Content"serverlist.txt";

在此目录创建一个Serverlist.txt文件,请将需要收集的服务器名填到此文件中,一行一个服务器的主机名,如:

收集服务器硬盘空间,并用邮件通知管理员_第1张图片

4)修改SMTP服务器及发件人邮件地址:

$smtpServer="mail01.sysmicro.cn"

$smtp=New-ObjectNet.Mail.SmtpClient($smtpServer)

$msg=New-ObjectNet.Mail.MailMessage

$msg.To.Add($user)

$msg.From="[email protected]"

5)

2、在PowerShell中测试如果脚本不能执行,请修改脚本执行策略

收集服务器硬盘空间,并用邮件通知管理员_第2张图片

可参考文章:http://hubuxcg.blog.51cto.com/2559426/1309431#590523中第二步。

3、创建计划任务,让脚本自动在指定时间运行!

Powershell–file”D:\Script\CheckDiskSpace_51cto.ps1”

可参考文章:http://hubuxcg.blog.51cto.com/2559426/1309431#590523中第四步

执行效果如下:

收集服务器硬盘空间,并用邮件通知管理员_第3张图片

如果收集的服务器中,所有硬盘空间都大于设置的警告值,如:20%,则只会生成空白报告而不发邮件,如下:

收集服务器硬盘空间,并用邮件通知管理员_第4张图片

说明:此方法使用于域环境下,以域管理员或是拥有所有服务器管理员权的账号登录到某台服务器执行此脚本。如果为执行脚本的时登录的账号没有对应服务器的管理员权限,将无法执行。如果每台服务器的权限分散,没有管理员权限,则建议将脚本分析放在各台服务器上,然后在各服务器上去执行脚本或是设置计划任务。

当然,你也可以用于收集域中所有电脑的硬盘使用情况!