2016-06-03 2 views
0

특정 폴더 공간 모니터링을 모니터링하고 임계 값을 초과하면 경고 메시지를 보내는 스크립트를 작성했습니다. 내가 겪고있는 문제는 여러 대의 서버가 여러 대의 전자 메일을받는 것과 같습니다. 그래서 문제가있는 모든 서버를 가진 하나의 메일에 결과를 통합 할 수 있습니다. 아래는 스크립트입니다. -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 [email protected] -from [email protected] -Subject "Limit Alert" -SmtpServer $smtpserver -Attachments "C:\reslt.txt" 
} 

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

무엇을 시도 했습니까? 텍스트 파일에 출력을 작성하고 foreach 루프로 보내고, 결과를 많이 작성한 다음 텍스트 파일을 작성하고 루프가 완료된 후 보내야합니다. –

답변

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 [email protected] -from [email protected] -Subject "Limit Alert" -SmtpServer $smtpserver -Body $bodyString 
} 
else { 
    Send-MailMessage -to [email protected] -from [email protected] -Subject "Limit Alert - no results" -SmtpServer $smtpserver -Body "No results were found for servers over the limit" 
} 
+0

나는 약간의 수정을 위해 스크립트를 편집했고 그것은 나를 위해 일했습니다. 고마워. – Abhishek

+0

결과 섹션에 환경 이름을 추가해야합니다. 아래의 서버에서 - 저장 폴더 여부 : 지금은 같은 결과를 얻고있다의로 GB 을 할 수 Server1의 폴더 저장 20 GB를 초과 및 서버 2 초과 20기가바이트에 25.1130541330203 GB 저장 폴더에 현재와 25.0478365654126에서 현재 아래 서버에 출력 likeSegmentStore 폴더 상태를 만들 수있을 : 서버 1 초과 20기가바이트에 1. Env1 저장 폴더 및 25.1130541330203에서 현재 GB 2.Env2 저장 폴더 서버 2 20 GB를 초과하고 25.0478365654126 GB에서 현재 – Abhishek

관련 문제