Tippsammlung

Kleine Tippsammlung für mich und dijenige die sich auf meine Webseite verirrt haben.

Archiv

Jahr
Tag(s):
PowerShell: Robocopy mit Email Benachrichtigung
Mit diesem PowserShell Script kann man zwei Ordner Synchronisieren und zum Abschluss als Email verschicken. Wird ein SMTP Port ungleich als 25 verwendet muss man Benutzernamen und Passwort für den SSL-Modus zuzüglich nennen.

Es wurden folgende Robobopy Parameter eingetragen:
  • /E Kopiert Unterverzeichnisse, einschließlich leerer Unterverzeichnisse.
  • /COPY:DAT Gibt an, welche Inhalte für Dateien kopiert werden sollen, hier Datum
  • /PURGE Löscht Zieldateien/-verzeichnisse, die in der Quelle nicht mehr vorhanden sind.
  • /MIR Spiegelt eine Verzeichnisstruktur (Entspricht "/E" mit "/PURGE").
  • /NP Kein Status - der Prozentsatz kopierter Elemente wird nicht angezeigt.
  • /R Anzahl von Wiederholungsversuchen bei fehlerhaften Kopiervorgängen. Der Standardwert ist 1 Million.
  • /W Wartezeit zwischen Wiederholungsversuchen. Der Standardwert ist 30 Sekunden.

#   **************************************************************
#   * PowserShell Script                                         *
#   **************************************************************
#   * Script:                                                    *
#   * PowerShell Robocopy script with e-mail notification        *
#   * e-mail notification with SSL support                       *
#   **************************************************************
#   * Autor:                                                     *
#   * D. Stastka, 2011-12-28                                     *
#   **************************************************************

# Variables Backup
$SourceFolder = "c:\MyData"
$DestinationFolder = "d:\MyBackup"
$Logfile = "C:\Scripts\Robocopy\log" + (Get-Date).tostring("yyyy-MM-dd") + ".log"

# Variables Email notification
$EmailFrom = "server@domain.ch"
$EmailTo = "benutzer@domain.ch"
$EmailBody = "Robocopy completed successfully. See attached log file for details"
$EmailSubject = "Robocopy Job"
$SMTPServer = "smtp.domain.ch"
$SMTPPort = "25"
$Username = "MyUserName"
$Password = "MyPassword"


# Mirror Folder with Robocopy
Robocopy $SourceFolder $DestinationFolder /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30 /LOG:$Logfile /NP

# Send E-mail message with log file attachment
$Message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $EmailSubject, $EmailBody)
$Attachment = New-Object Net.Mail.Attachment($Logfile, 'text/plain')
$Message.Attachments.Add($Attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, $SMTPPort)
If (-not $SMTPPort -eq "25")
{
$SMTPClient.EnableSsl = $true;
     $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
}
$SMTPClient.Send($Message)

# EOF