O código em powershell pode ser utilizado em um servidor para enviar por e-mail com as informações de espaço em discos
# uma tarefa pode ser agendada no agendador de tarefas do windows, ou com um script power shell
# nome do arquivo: monitora_disco.ps1
Function sendEmail
{
param($to)
# Sender and Recipient Info
$MailFrom = "xxx@gmail.com"
$MailTo = "xxx@gmail.com"
# Sender Credentials
$Username = "xxx@gmail.com"
$Password = "xxx"
# Server Info
$SmtpServer = "smtp.gmail.com"
$SmtpPort = "587"
# Message stuff
$MessageSubject = $to
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
$Message.IsBodyHTML = $true
$Message.Subject = $MessageSubject
$Message.Body = @'
<!DOCTYPE html>
<html>
<head>
</head>
<body>
MENSAGEM ENVIADA SOBRE O SERVIDOR.
</body>
</html>
'@
# Construct the SMTP client object, credentials, and send
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
$Smtp.EnableSsl = $true
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
$Smtp.Send($Message)
}
# Get SQL Server hostname
$hostname=Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name
# Get all drives
$Results = Get-WMIObject -ComputerName $hostname Win32_LogicalDisk |
where{($_.DriveType -eq 3)}
ForEach ($Result In $Results)
{
$drive = $Result.Name
$space = $Result.FreeSpace
$size = $Result.Size
if((($space/1gb)/($size/1gb)) -le 0.9){
$espacoLivre = ("{0:N0}" -f [math]::truncate($space/1GB))+" GB"
$espacoTotal = ("{0:N0}" -f [math]::truncate($size/1GB))+" GB"
sendEmail $mensagem
}
}
Muito bom esse Script! Não imaginava que no Power Shell fosse possível fazer isso! Parabéns!