我从这里得到了一个Powershell脚本,它会将磁盘空间的使用情况导出到html文件中。 我希望在每15分钟或30分钟内及时给出使用方法。 有什么办法,我们可以修改这个脚本是一样的…..
我知道这可以通过执行一个任务重新运行脚本15每分钟和刷新的HTML页面将达到预期的结果,虽然有任何其他方式….
提前致谢….
脚本….
$freeSpaceFileName = "c:\script\FreeSpace.htm" $serverlist = "C:\slist.txt" $warning = 30 $critical = 10 New-Item -ItemType file $freeSpaceFileName -Force # Getting the freespace info using WMI #Get-WmiObject win32_logicaldisk | Where-Object {$_.drivetype -eq 3} | format-table DeviceID, VolumeName,status,Size,FreeSpace | Out-File FreeSpace.txt # Function to write the HTML Header to the file Function writeHtmlHeader { param($fileName) $date = ( get-date ).ToString('dd/mm/yyyy') Add-Content $fileName "<html>" Add-Content $fileName "<head>" Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>" Add-Content $fileName '<title>All Servers DiskSpace Report</title>' add-content $fileName '<STYLE TYPE="text/css">' add-content $fileName "<!--" add-content $fileName "td {" add-content $fileName "font-family: Tahoma;" add-content $fileName "font-size: 11px;" add-content $fileName "border-top: 1px solid #999999;" add-content $fileName "border-right: 1px solid #999999;" add-content $fileName "border-bottom: 1px solid #999999;" add-content $fileName "border-left: 1px solid #999999;" add-content $fileName "padding-top: 0px;" add-content $fileName "padding-right: 0px;" add-content $fileName "padding-bottom: 0px;" add-content $fileName "padding-left: 0px;" add-content $fileName "}" add-content $fileName "body {" add-content $fileName "margin-left: 5px;" add-content $fileName "margin-top: 5px;" add-content $fileName "margin-right: 0px;" add-content $fileName "margin-bottom: 10px;" add-content $fileName "" add-content $fileName "table {" add-content $fileName "border: thin solid #000000;" add-content $fileName "}" add-content $fileName "-->" add-content $fileName "</style>" Add-Content $fileName "</head>" Add-Content $fileName "<body>" add-content $fileName "<table width='100%'>" add-content $fileName "<tr bgcolor='#CCCCCC'>" add-content $fileName "<td colspan='7' height='25' align='center'>" add-content $fileName "<font face='tahoma' color='#003399' size='4'><strong>All Servers DiskSpace Report - $date</strong></font>" add-content $fileName "</td>" add-content $fileName "</tr>" add-content $fileName "</table>" } # Function to write the HTML Header to the file Function writeTableHeader { param($fileName) Add-Content $fileName "<tr bgcolor=#CCCCCC>" Add-Content $fileName "<td width='10%' align='center'>Drive</td>" Add-Content $fileName "<td width='50%' align='center'>Drive Label</td>" Add-Content $fileName "<td width='10%' align='center'>Total Capacity(GB)</td>" Add-Content $fileName "<td width='10%' align='center'>Used Capacity(GB)</td>" Add-Content $fileName "<td width='10%' align='center'>Free Space(GB)</td>" Add-Content $fileName "<td width='10%' align='center'>Freespace %</td>" Add-Content $fileName "</tr>" } Function writeHtmlFooter { param($fileName) Add-Content $fileName "</body>" Add-Content $fileName "</html>" } Function writeDiskInfo { param($fileName,$devId,$volName,$frSpace,$totSpace) $totSpace=[math]::Round(($totSpace/1073741824),2) $frSpace=[Math]::Round(($frSpace/1073741824),2) $usedSpace = $totSpace - $frspace $usedSpace=[Math]::Round($usedSpace,2) $freePercent = ($frspace/$totSpace)*100 $freePercent = [Math]::Round($freePercent,0) if ($freePercent -gt $warning) { Add-Content $fileName "<tr>" Add-Content $fileName "<td>$devid</td>" Add-Content $fileName "<td>$volName</td>" Add-Content $fileName "<td>$totSpace</td>" Add-Content $fileName "<td>$usedSpace</td>" Add-Content $fileName "<td>$frSpace</td>" Add-Content $fileName "<td>$freePercent</td>" Add-Content $fileName "</tr>" } elseif ($freePercent -le $critical) { Add-Content $fileName "<tr>" Add-Content $fileName "<td>$devid</td>" Add-Content $fileName "<td>$volName</td>" Add-Content $fileName "<td>$totSpace</td>" Add-Content $fileName "<td>$usedSpace</td>" Add-Content $fileName "<td>$frSpace</td>" Add-Content $fileName "<td bgcolor='#FF0000' align=center>$freePercent</td>" #<td bgcolor='#FF0000' align=center> Add-Content $fileName "</tr>" } else { Add-Content $fileName "<tr>" Add-Content $fileName "<td>$devid</td>" Add-Content $fileName "<td>$volName</td>" Add-Content $fileName "<td>$totSpace</td>" Add-Content $fileName "<td>$usedSpace</td>" Add-Content $fileName "<td>$frSpace</td>" Add-Content $fileName "<td bgcolor='#FBB917' align=center>$freePercent</td>" # #FBB917 Add-Content $fileName "</tr>" } } Function sendEmail { param($from,$to,$subject,$smtphost,$htmlFileName) $from=New-Object System.Net.Mail.MailAddress "[email protected]" $to= New-Object System.Net.Mail.MailAddress "[email protected]" $subject="Servers Disk space report - $Date" $smtphost="BRISBANE-EX03.int.heatandcontrol.com" $body = Get-Content $htmlFileName $smtp= New-Object System.Net.Mail.SmtpClient $smtphost $msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body $msg.isBodyhtml = $true $smtp.send($msg) } writeHtmlHeader $freeSpaceFileName foreach ($server in Get-Content $serverlist) { Add-Content $freeSpaceFileName "<table width='100%'><tbody>" Add-Content $freeSpaceFileName "<tr bgcolor='#CCCCCC'>" Add-Content $freeSpaceFileName "<td width='100%' align='center' colSpan=6><font face='tahoma' color='#003399' size='2'><strong> $server </strong></font></td>" Add-Content $freeSpaceFileName "</tr>" writeTableHeader $freeSpaceFileName $dp = Get-WmiObject win32_logicaldisk -ComputerName $server | Where-Object {$_.drivetype -eq 3} foreach ($item in $dp) { Write-Host $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size writeDiskInfo $freeSpaceFileName $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size } } writeHtmlFooter $freeSpaceFileName $date = ( get-date ).ToString('yyyy/MM/dd') sendEmail [email protected] [email protected] "Disk Space Report - $Date" hub1 $freeSpaceFileName
我不喜欢这个脚本的唯一的东西是不断Add-Content
,它们不是必需的。 我会刚刚生成所有这样的HTML:
$htmlHeader = @" .... td { font-family: Tahoma; font-size: 11px; border-top: 1px solid #999999; border-right: 1px solid #999999; border-bottom: 1px solid #999999; border-left: 1px solid #999999; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; } body { margin-left: 5px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; add-content $fileName table { border: thin solid #000000; } .... "@
然后,一旦我想为HTML正文添加内容,您可以使用variables$htmlBody
,然后在最后使用$htmlHeader + $htmlBody
将它们组合在一起。
为了让你的HTML页面刷新,你可以在HTML端添加一个元标签,这个标签应该为你做好准备。 这将每隔30秒刷新页面: meta http-equiv="refresh" content="30"
注意:SF不喜欢这个文本周围的标签,所以它需要围绕它的<
和/>
。
你问了其他的build议,我有几件事要提供。
您可以使用性能监视器来做到这一点,但如果是我,我会使用任务计划程序,并简单地将信息转储到某个位置,因为性能监视器的开销对于您正在尝试执行的操作来说相当大。
你只是想确保驱动器有空间吗? 如果是这样的话,那么将事件添加到事件驱动的“日志驱动器”(日志:SYSTEM,源:SRV,EventID:2013),警告并向您发送一封电子邮件可能会更容易。 (我假设这是本报告的预期目的,如果不这样做,则不予理睬)。 我使用类似的Windows备份成功和失败事件的注意,让我知道,但再次,备份失败。 这样可能会更好,如果它符合条例草案,所以你没有收到电子邮件每15分钟。
像MRTG这样的产品也可以通过“微调”来监控磁盘空间的使用情况,并为您提供漂亮的graphics和中央位置来检查。 ( http://www.castellan.net/MRTG.asp )