top of page
Foto do escritorCloudDB

SQL Server - Monitorando Discos com Power Shell

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

}

}

64 visualizações1 comentário

Posts recentes

Ver tudo

1 comentario


Leandro Keppel
Leandro Keppel
11 dic 2020

Muito bom esse Script! Não imaginava que no Power Shell fosse possível fazer isso! Parabéns!

Me gusta
bottom of page