Script para conectar por IPC Share, realizar backup, compactar .log e enviar por e-mail (.ps1)

A seguir apresento um script .ps1 que executa as seguintes ações:
-conecta por IPC em um host destino
-copia os arquivos, criando um .log
-compacta o .log
-envia para um e-mail o log zipado
Configure as variáveis de acordo com a necessidade, e, em caso de dúvida, deixe um comentário.

# IPC$ opcoes de compartilhamento                
$IPCHost = "\\IP_do_host_destino"       # IP do host para criar o compartilhamento IPC$
$IPCUser = "usuario"                    # Usuário de autenticação 
$IPCPwd  = "senha"                      # senha para IPC$ share

# Configuracoes de origem dos arquivos                
$SrcHost = "E:\pasta_origem"             # Hostname de origem - pasta de origem


# Configuracoes de destino dos arquivos           
$DstHost = "\\IP_do_host_destino\Backups\pasta"     # caminho completo de destino


$LogPath = "C:\pasta_log\pastabackup_$(get-date -f yyyy-MM-dd)"
mkdir $LogPath
# Caminho completo do arquivo de log
$LogFile = $LogPath + "\arquivolog$(get-date -f yyyy-MM-dd).log"
echo $LogPath
echo $LogFile

##Bloco de acao                    
NET USE $IPCHost\IPC$ /u:$IPCUser $IPCPwd
#ação que será executada, configure conforme sua necessidade
robocopy.exe $SrcHost $DstHost /MIR /SECFIX /COPYALL /log:$LogFile
NET USE $IPCHost\IPC$ /D

##Compressao da pasta dos logs
$zipfile = "C:\pasta_log\$(get-date -f yyyy-MM-dd).zip"
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.Zipfile]::CreateFromDirectory($LogPath, $zipfile)

## Configuracoes de email
$smtpserver = "smtp.dominio.br"
$msg = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($zipfile)
$smtp = new-object Net.Mail.SmtpClient($smtpServer, porta)
$smtp.EnableSsl = $True
$smtp.Credentials = New-Object System.Net.NetworkCredential("usuario_email", "senha_email") 
$msg.From = "quemenvia@dominio.br"
$msg.To.Add("mensagem_a_ser_enviada" )
$msg.Subject = "Assunto do email"
$msg.Body = "Log em anexo"
$msg.Attachments.Add($att)
$smtp.Send($msg)


Fontes:
https://klyavlin.wordpress.com/2012/09/19/robocopy-network-usernamepassword/
https://msdn.microsoft.com/pt-br/library/hh485707%28v=vs.110%29.aspx
http://stackoverflow.com/questions/1153126/how-to-create-a-zip-archive-with-powershell

Comentários

Postagens mais visitadas deste blog

Lava-louças Brastemp BLE20 - RESOLVIDO - Piscando luzes Iniciar e enxaguar/Erro ao jogar água fora

Microsoft Print to PDF não aparece na lista de impressoras nos programas