用于监视文件夹空间的Powershell脚本

时间:2016-06-03 17:43:39

标签: powershell

我编写了一个监视特定文件夹空间监视的脚本,一旦超过阈值就会提醒我。问题是我面临的是多台服务器,我收到了多封电子邮件,因此我们可以在一封邮件中整合结果,让所有服务器都有问题。以下是脚本: -

$servers = Get-Content C:\server.txt
$folder = "D$\store\"
$smtpserver = "XXXXXX"
@( 
           foreach ($Server in $Servers) 
          { 
$folderSize = ( Get-ChildItem -path \\$server\$folder -Recurse -Force | Measure-Object -Property Length -Sum ).Sum

if ($folderSize -gt '60Gb') {
 Write-output "Folder size exceeded 60 GB on server:-$Server. Current size on $server is $folderSize. Please review and take further action." | Out-file -FilePath "C:\reslt.txt"
 Send-MailMessage -to abc@abc.com -from xx@xx.com -Subject "Limit Alert" -SmtpServer $smtpserver -Attachments "C:\reslt.txt"
 }

else { Write-output "Folder size is within 60GB on $server." }})

1 个答案:

答案 0 :(得分:0)

您应该发布您尝试过的内容。话虽这么说,这是一个开头,用记事本写的,所以请原谅任何轻微的问题。您应该只是获取结果,而不是迭代它们,将它们放入表中,将电子邮件设置为HTML,并将转换为HTML片段的表的结果放入邮件正文中。

$servers = Get-Content C:\server.txt
$folder = "D$\store\"
$smtpserver = "XXXXXX"
$results = @()

foreach ($Server in $Servers) { 
    $folderSize = ( Get-ChildItem -path \\$server\$folder -Recurse -Force | Measure-Object -Property Length -Sum ).Sum
    if ($folderSize -gt '60Gb') {
        Write-Output "Folder size exceeded limit on $server"
        $results += New-Object -TypeName PSObject -Property @{
            ServerName = $Server
            FolderSize = $folderSize
        }
    }
    else { Write-output "Folder size is within 60GB on $server." }
}
if ($results.Count -gt 0){
    $bodyString = "Servers over limit:"
    #I'd get fancy here and take $results, format it as a table, and then convert to HTML and put the snippet in the body...
    $results | % {$bodyString += "The server "+$_.ServerName+"is over the limit and is currently at "+$_.FolderSize+"GB`r`n"}
    Send-MailMessage -to abc@abc.com -from xx@xx.com -Subject "Limit Alert" -SmtpServer $smtpserver -Body $bodyString
}
else {
    Send-MailMessage -to abc@abc.com -from xx@xx.com -Subject "Limit Alert - no results" -SmtpServer $smtpserver -Body "No results were found for servers over the limit"
}
相关问题