# Erstellt am 18.02.2025 - Alin Sennewald - IN-AP
# Backup läuft in folgenden Monaten: Januar, März, Mai, Juli, September, November in den Ordner: Notfalldoku01

# Die Zeile 8 und 9 muss nur einmal auf den Rechner mit dem User der das Script ausführt werden.
# Damit das Passwort mit der Maschine und dem User in das Verzeichnis Temp als Securestring abgelegt wird.
# Danach Bitte die Zeile deactivieren. 
 
# $Passwort = Read-Host "Geben Sie das Passwort ein" -AsSecureString
# $Passwort | ConvertFrom-SecureString | Out-File "C:\Temp\cred.txt"

# Benutzername für das Share
$Username = "10.253.206.200\controlm"

# Ordnername
$Ordnername = "Notfalldoku01"

if (Get-PSDrive -Name $Ordnername -ErrorAction SilentlyContinue) {
    Remove-PSDrive -Name $Ordnername
    Write-Host "PSDrive $Ordnername entfernt."
}

# Gespeichertes Passwort laden und entschlüsseln SPEICHERORT ANPASSEN
$EncryptedPassword = Get-Content "C:\Temp\cred.txt" | ConvertTo-SecureString
$Credential = New-Object System.Management.Automation.PSCredential ($Username, $EncryptedPassword)

New-PSDrive -Name $Ordnername -PSProvider FileSystem -Root "\\10.253.206.200\$Ordnername" -Credential $Credential

# Liste der Quell- und Zielverzeichnisse für Notfalldoku01 fuer die MOnate 1 / 3 / 5 / 7 / 9 / 11 
$BackupJobs = @(
    @{Quelle = "\\xw555.n-ad.n-ergie\Betrieb$\Betrieb"; Ziel = "\\10.253.206.200\$Ordnername\Betrieb"}
    @{Quelle = "\\xw555.n-ad.n-ergie\Betrieb$\Mitarbeiter"; Ziel = "\\10.53.206.200\$Ordnername\Mitarbeiter"}
    @{Quelle = "\\xw555.n-ad.n-ergie\Doku IT-ER"; Ziel = "\\10.253.206.200\$Ordnername\Doku IT-ER"}
    @{Quelle = "\\xw555.n-ad.n-ergie\Doku IT-IN"; Ziel = "\\10.253.206.200\$Ordnername\Doku IT-IN"}
    @{Quelle = "\\xw555.n-ad.n-ergie\Doku IT-PA"; Ziel = "\\10.253.206.200\$Ordnername\Doku IT-PA"}
)

# Robocopy Parameter
$RobocopyParams = "/R:1 /W:3 /E /PURGE /NP /XD"

# Starte Backup-Prozess
foreach ($Job in $BackupJobs) {
    $Quelle = $Job.Quelle
    $Ziel = $Job.Ziel

    # Robocopy ausführen
    $RobocopyCmd = "robocopy `"$Quelle`" `"$Ziel`" $RobocopyParams"
    $Result = Invoke-Expression -Command $RobocopyCmd

    # Erfolg oder Fehler prüfen
    if ($LASTEXITCODE -lt 8) {
        $Status = "Backup erfolgreich"
    } else {
        $Status = "Backup fehlgeschlagen (Fehlercode: $LASTEXITCODE)"
    }

}

# Nach dem Backup den PSDrive wieder entfernen
Remove-PSDrive -Name "Notfalldoku01"