Monitoramento de Espaço em Disco com Powershell com alerta via e-mail
Compartilhe :

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.

Monitoramento de Espaço em Disco com Powershell com alerta via e-mail
Monitoramento de Espaço em Disco com Powershell com alerta via e-mail

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

  1. PowerShell instalado no sistema (já vem com Windows 7 em diante).
  2. Um servidor SMTP configurado para envio de e-mails.
  3. 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

  1. $smtpServer, $portaSMTP, $emailDe, $emailPara: Configurações para envio do e-mail.
  2. $unidades: Lista todas as unidades locais disponíveis.
  3. $limiteEspacoLivreGB: Espaço mínimo antes de acionar o alerta.
  4. foreach: Itera por cada unidade e verifica o espaço livre.
  5. 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) ou 465 (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

  1. 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.
  2. Configurar TLS no Script:
    • O Gmail exige que a comunicação seja feita usando TLS. O parâmetro UseSsl já garante isso.
  3. Permitir Acesso:
    • Certifique-se de que a sua conta do Gmail está configurada para permitir envios SMTP.
  4. 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

  1. 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.
  2. Caminho UNC e DeviceID: A unidade remota no formato \\Servidor\Compartilhamento precisa ser separada em:
    • Nome do servidor (Servidor).Caminho do compartilhamento (Compartilhamento).
    O split e a lógica de $unidade.Split('\')[-1] ajudam a extrair essas partes corretamente.
  3. Espaço Livre: Converte o valor de bytes para gigabytes com [math]::Round($valor / 1GB, 2).
  4. Envio de E-mail: Usa Send-MailMessage para notificar o administrador, como no exemplo para unidades locais.
  5. 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

  1. Abra o PowerShell como Administrador.
  2. Navegue até a pasta onde o script está salvo: cd C:\Scripts
  3. 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:

  1. Abra o Agendador de Tarefas (Task Scheduler).
  2. Clique em Criar Tarefa Básica.
  3. Nomeie a tarefa (ex.: Monitoramento de Disco).
  4. Escolha a frequência (diário, semanal, etc.).
  5. Em Ação, selecione Iniciar um Programa.
  6. Adicione o caminho do PowerShell e do script: Programa/script: powershell.exe Argumentos: -ExecutionPolicy Bypass -File C:\Scripts\MonitoramentoEspacoDisco.ps1
  7. 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ê:

Gostou deste guia? Compartilhe e explore mais tutoriais para otimizar suas tarefas no Windows!


Compartilhe :

Posts Similares