Neste tutorial, vamos aprender a efetuar o Monitoramento de Espaço em Disco com Powershell com alerta via e-mail
Vídeo Aula : Monitoramento de Espaço em Disco com Powershell com alerta via e-mail
Curso PowerShell de A a Z: Fundamentos
Vem aí o curso “PowerShell de A a Z: Fundamentos”!
Um treinamento completo que vai muito além de tutoriais rápidos como este.
Hoje, estamos resolvendo um problema específico — monitorar espaço em disco — mas no curso você terá uma experiência aprofundada, aprendendo passo a passo o funcionamento de cada comando, além de criar automações avançadas e dominar as melhores práticas do PowerShell.
No conteúdo, você vai começar do básico, como manipular arquivos e pastas, e avançar para tópicos como loops, arrays, expressões regulares, automações robustas e muito mais.
E tem mais uma novidade: na próxima semana, as primeiras aulas já estarão disponíveis! Se você é assinante do canal no nível Elite ou superior, terá acesso exclusivo à nossa plataforma de EAD, a XP IT Cursos, com uma trilha de aprendizagem organizada e certificado de conclusão ao final do curso.
Todas as informações estão no botão “Seja Membro” aqui no YouTube.
Agora, bora voltar ao tutorial e aprender como monitorar espaço em disco de forma eficiente com o PowerShell!
No Clube WebMundi.com – Youtube, você encontrará aulas exclusivas sobre a utilização de scripts PowerShell.
Por isso, não perca tempo, Seja associado do Clube do Canal WebMundi.com e aproveite diversos benefícios.
Monitoramento de Espaço em Disco com Powershell com alerta via e-mail
Introdução
Se você trabalha com TI, sabe o quão importante é monitorar o espaço em disco para evitar interrupções em sistemas críticos como ERPs ou serviços de tecnologia diversos. Com o PowerShell, é possível criar um script simples, eficiente e automático para verificar o espaço livre e te avisar antes que algo dê errado.
Vale lembrar que este é mais um vídeo sobre Powershell e caso vocês gostem desse tipo de conteúdo deixe comentário sobre o assunto ou dê sua sugestão de novos temas que você gostaria de ver por aqui.
1. Por que usar o PowerShell para monitoramento de disco?
- É personalizável e fácil de automatizar.
- Permite enviar notificações por e-mail.
- Funciona em unidades locais e compartilhamentos de rede.
- Evita falhas por falta de espaço.
Se você quer um sistema simples, funcional e que economiza seu tempo, o PowerShell é a escolha certa.
2. Requisitos Prévios
- PowerShell instalado no sistema (já vem com Windows 7 em diante).
- Um servidor SMTP configurado para envio de e-mails.
- Permissões de administrador para executar scripts.
3. Criando o Script de Monitoramento Local
3.1 Estrutura Básica do Script
Crie um arquivo chamado MonitoramentoEspacoDisco.ps1 com o seguinte conteúdo:
# Configurações do e-mail
$smtpServer = "smtp.webmundi.com"
$portaSMTP = 900
$emailDe = "[email protected]"
$emailPara = "[email protected]"
$credenciais = New-Object System.Management.Automation.PSCredential("usuarioSMTP", (ConvertTo-SecureString "senhaSMTP" -AsPlainText -Force))
# Configurações de Monitoramento
$unidades = Get-PSDrive -PSProvider FileSystem
$limiteEspacoLivreGB = 10 # Espaço livre mínimo em GB
# Função para verificar espaço livre
foreach ($unidade in $unidades) {
if ($unidade.Used -gt 0) {
$espacoLivreGB = [math]::Round($unidade.Free / 1GB, 2)
if ($espacoLivreGB -lt $limiteEspacoLivreGB) {
# Envia e-mail de notificação
$assunto = "Alerta: Pouco espaco livre na unidade $($unidade.Name)"
$mensagem = "A unidade $($unidade.Name) possui apenas $($espacoLivreGB) GB livres."
Send-MailMessage -From $emailDe -To $emailPara -Subject $assunto -Body $mensagem -SmtpServer $smtpServer -Port $portaSMTP -Credential $credenciais -UseSsl
Write-Output "Alerta enviado para $emailPara sobre a unidade $($unidade.Name)."
} else {
Write-Output "Unidade $($unidade.Name): Espaco livre suficiente ($($espacoLivreGB) GB)."
}
}
}
3.2 Explicação do Script
- $smtpServer, $portaSMTP, $emailDe, $emailPara: Configurações para envio do e-mail.
- $unidades: Lista todas as unidades locais disponíveis.
- $limiteEspacoLivreGB: Espaço mínimo antes de acionar o alerta.
- foreach: Itera por cada unidade e verifica o espaço livre.
- Send-MailMessage: Envia o e-mail de alerta com os detalhes da unidade.
Atenção: Configuração de SMTP
Antes de rodar o script, é fundamental configurar corretamente o servidor SMTP, que será responsável pelo envio dos e-mails.
Cada provedor de e-mail possui configurações específicas, como servidor, porta, tipo de autenticação e segurança (SSL/TLS).
Abaixo, destacamos exemplos genéricos que você pode adaptar:
-
Servidor SMTP: Geralmente algo como
smtp.seuprovedor.com
. -
Porta: Comum usar
587
(STARTTLS) ou465
(SSL). - Autenticação: Normalmente é necessário fornecer seu e-mail e senha.
-
Observações importantes:
- Verifique se o seu provedor requer configurações adicionais, como ativar o envio SMTP na conta.
- Alguns provedores, como Gmail, podem exigir senha de aplicativo ou autenticação em dois fatores.
Dica: Consulte a documentação oficial do seu provedor para obter as configurações corretas e garantir que o envio de e-mails funcione adequadamente.
Nota: Como as configurações variam de acordo com o provedor, o tutorial não cobre todos os casos possíveis. Adapte o script com base nas informações fornecidas pelo serviço de e-mail que você está utilizando.
Passo a Passo para Configurar Gmail
-
Ativar “Acesso a App Menos Seguro” ou Criar Senha de App:
- O Gmail desativou o suporte para “Aplicativos menos seguros”.
-
Crie uma senha de aplicativo seguindo estas etapas:
- Acesse a página da sua conta do Google: Minha Conta Google.
- Vá em Segurança > Senhas de app (essa opção só aparece se você ativar a verificação em duas etapas).
- Escolha E-mail como app e Windows Computer como dispositivo, depois gere a senha.
- Use essa senha gerada no campo
$senhaApp
.
-
Configurar TLS no Script:
- O Gmail exige que a comunicação seja feita usando TLS. O parâmetro
UseSsl
já garante isso.
- O Gmail exige que a comunicação seja feita usando TLS. O parâmetro
-
Permitir Acesso:
- Certifique-se de que a sua conta do Gmail está configurada para permitir envios SMTP.
-
Testar o Script:
- Substitua os campos pelo seu e-mail, destinatário e senha de app para verificar se o e-mail é enviado corretamente.
4. Criando o Script de Monitoramento Unidades Remotas
Se você deseja monitorar unidades compartilhadas na rede, é necessário fazer algumas adaptações no script. Ao invés de listar as unidades locais automaticamente com Get-PSDrive
, você pode declarar manualmente os caminhos das unidades remotas que deseja monitorar.
Passo 1: Declarar Unidades Remotas
Adicione os caminhos das unidades remotas (em formato UNC, como \\Servidor\Compartilhamento
) em um array chamado $unidades
. Exemplo:
$unidades = @("\\SrvWebMundi01\Compartilhamento", "\\SQLWebMundi02\Data")
Passo 2: Ajustar o Loop
Modifique o loop foreach
para percorrer as unidades remotas e verificar o espaço disponível. Para isso, utilize o cmdlet Get-CimInstance
para obter informações detalhadas sobre o espaço em disco. Aqui está um exemplo do loop ajustado:
# Função para verificar espaço livre
foreach ($unidade in $unidades) {
try {
# Obtém as informações de espaço em disco da unidade remota
$disco = Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName ($unidade -split '\')[2] -Filter "DeviceID='$($unidade.Split('\')[-1])'"
# Calcula o espaço livre em GB
$espacoLivreGB = [math]::Round($disco.FreeSpace / 1GB, 2)
# Verifica se o espaço livre está abaixo do limite
if ($espacoLivreGB -lt $limiteEspacoLivreGB) {
$assunto = "Alerta: Pouco espaço livre na unidade $unidade"
$mensagem = "A unidade $unidade possui apenas $espacoLivreGB GB livres."
# Envia o e-mail de notificação
Send-MailMessage -From $emailDe -To $emailPara -Subject $assunto -Body $mensagem -SmtpServer $smtpServer -Port $portaSMTP -Credential $credenciais -UseSsl
Write-Output "Alerta enviado para $emailPara sobre a unidade $unidade."
} else {
Write-Output "Unidade $unidade: Espaço livre suficiente ($espacoLivreGB GB)."
}
} catch {
Write-Output "Erro ao verificar a unidade $unidade: $_"
}
}
Explicação do Loop Ajustado
-
Get-CimInstance
: Obtém informações detalhadas sobre o disco remoto.- A propriedade
$disco.FreeSpace
retorna o espaço livre em bytes. - A propriedade
$disco.Size
retorna o tamanho total do disco, caso precise de mais cálculos.
- A propriedade
-
Caminho UNC e DeviceID: A unidade remota no formato
\\Servidor\Compartilhamento
precisa ser separada em:- Nome do servidor (
Servidor
).Caminho do compartilhamento (Compartilhamento
).
split
e a lógica de$unidade.Split('\')[-1]
ajudam a extrair essas partes corretamente. - Nome do servidor (
-
Espaço Livre: Converte o valor de bytes para gigabytes com
[math]::Round($valor / 1GB, 2)
. -
Envio de E-mail: Usa
Send-MailMessage
para notificar o administrador, como no exemplo para unidades locais. -
Tratamento de Erros: O bloco
try...catch
garante que erros durante a consulta não interrompam o restante do script.
Com essas mudanças, o script monitora unidades remotas da mesma forma que as locais, mas com a flexibilidade de personalizar os caminhos das unidades.
5. Testando o Script
- Abra o PowerShell como Administrador.
- Navegue até a pasta onde o script está salvo:
cd C:\Scripts
- Execute o script:
.\MonitoramentoEspacoDisco.ps1 .\MonitoramentoEspacoDiscoRede.ps1
Se o espaço livre estiver abaixo do limite, você receberá um e-mail.
6. Automatizando com o Agendador de Tarefas
Para executar o script regularmente:
- Abra o Agendador de Tarefas (Task Scheduler).
- Clique em Criar Tarefa Básica.
- Nomeie a tarefa (ex.: Monitoramento de Disco).
- Escolha a frequência (diário, semanal, etc.).
- Em Ação, selecione Iniciar um Programa.
- Adicione o caminho do PowerShell e do script:
Programa/script: powershell.exe Argumentos: -ExecutionPolicy Bypass -File C:\Scripts\MonitoramentoEspacoDisco.ps1
- Finalize.
O monitoramento será realizado automaticamente no horário agendado.
7. Conclusão
Com este tutorial, você aprendeu a criar um sistema de monitoramento de espaço em disco usando PowerShell. O script é flexível, permitindo monitorar tanto unidades locais quanto remotas, e garante que você receba notificações sempre que o espaço livre estiver baixo.
Implemente esse monitoramento e mantenha seu sistema sempre sob controle!
Se este conteúdo foi útil, compartilhe e deixe seu comentário abaixo.
Experimente e otimize sua rotina hoje mesmo!
Mais Conteúdos sobre Run Commands no Windows
221 Comandos Executar do Windows : Run Commands
Materiais e leituras que recomendamos para você:
- Como aumentar sua produtividade no Windows com teclas de atalho
- 221 Comandos Executar do Windows : Run Commands
- Como ativar e desativar a hibernação no Windows via Prompt de Comando
- 10 teclas de atalho mais úteis do windows
Gostou deste guia? Compartilhe e explore mais tutoriais para otimizar suas tarefas no Windows!