# Script de JManzur # Alojar Script en C:\IT\Script y crear el directorio C:\IT\LOG # Defino Variables: # Unidades a Monitorear, definir a $null para revisar todas las unidades o definir letra del siguiente modo: $drives = @("C","D"); $drives = @("C"); $FECHA = Get-Date -Format dd/MM/yyy $FECHA2 = Get-Date -Format ddMMyyy $IP = Test-Connection -ComputerName (hostname) -Count 1 | Select IPV4Address # Indicar letra de unidade(s) separando por "," Ej: Get-PSDrive C,D,E $ESPACIO = Get-PSDrive C | Select-Object Name, @{'Name'='Used (GB)'; 'Expression'={[math]::truncate($_.used / 1GB)}}, @{'Name'='Free (GB)';'Expression'={[math]::truncate($_.free / 1GB)}} # Espacio minimo libre requerido para alertar $minSize = 30GB; # Capturo "Write-Host" para log Start-Transcript -Path C:\IT\LOG\Revision_Discos_$FECHA2.log if ($drives -eq $null -Or $drives -lt 1) { $localVolumes = Get-WMIObject win32_volume; $drives = @(); foreach ($vol in $localVolumes) { if ($vol.DriveType -eq 3 -And $vol.DriveLetter -ne $null ) { $drives += $vol.DriveLetter[0]; } } } foreach ($d in $drives) { Write-Host ("`r`n"); Write-Host ("Revisando unidad " + $d + " ..."); $disk = Get-PSDrive $d; if ($disk.Free -lt $minSize) { Write-Host ("Unidad " + $d + " Tiene menos de " + $minSize ` + " bytes Libres (" + $disk.free + "): Enviando Correo..."); # Defino las variables necesarias para el envio de mail con office365 $REMITENTE = "remitente@ejemplo.com" $DESTINATARIOS = "destinatario@gmail.com" $ASUNTO = "ALERTA!!! Poco espacio Unidad $d servidor $env:computername " $CUERPO = ("El $FECHA se detecto que la Unidad $d del servidor:" + "`n" + "$env:computername - $IP" + "`n" + "Tiene menos de 30GB libres" + "`n" + "Reporte de Espacio:" + "`n" + "$ESPACIO"); $SMTPServer = "smtp.office365.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("remitente@ejemplo.com", "SuperContraseña"); $SMTPClient.Send($REMITENTE, $DESTINATARIOS, $ASUNTO, $CUERPO) write-host "... Correo Enviado!" ; } else { Write-Host ("Unidad " + $d + " Tiene mas de " + $minSize + " bytes Libres: Nada que hacer."); } }