cls import-module SQLPS Set-Variable Servername -Value "localhost" -Scope global Set-Variable Username -Value "root" -Scope global Set-Variable Passwort -Value "123456789dd!" -Scope global Set-Variable SicherungsPfad -Value "E:\Sicherung\MariaDB" -Scope global Set-Variable SicherungsPfadTemp -Value $null -Scope global Set-Variable holedatum -Value (get-date -Format 'yyyyMMdd_HHmm') -Scope global Set-Variable SicherungsPfadFinal -Value "\\dd-sto01\f$\DD-STO01-A3\Backup\Computer\DD-VMP02-DB01\MariaDB" -Scope global Set-Variable Datenbanken -Value @("nextcloud") -Scope global # $dbs = Get-SqlDatabase -ServerInstance $Servername ####################################################################################################################### Function Backup-SQLDatabases { # Parameter definieren param( [parameter(mandatory=$true)] [validatecount(1, 10)] [string[]]$instanzen, [parameter(mandatory=$true)] [validatepattern("[A-Z]")] [validatecount(1,99)] #[validatecount(1, 9)] [string]$dbs ) $pfadzumbackup = $SicherungsPfad if(!(test-path -Path "$($pfadzumbackup)\$holedatum")){ try { new-item -path $pfadzumbackup -Name $holedatum -ItemType Directory -ErrorAction Stop | Out-Null Set-Variable SicherungsPfadTemp -Value "$($pfadzumbackup)\$holedatum" -Scope global } catch { write-host "Ordner für Backup konnte nicht erstellt werden" -ForegroundColor Yellow } } else{ write-host "Backup-Ordner existiert bereits" -ForegroundColor Yellow Set-Variable SicherungsPfadTemp -Value "$($pfadzumbackup)\$holedatum" -Scope global } write-host "Backup von der Datenbank $dbs wird erstellt" -ForegroundColor Yellow $arguments = "--host=$($Servername) --port=3306 --user=$($Username) --password=$($Passwort) --databases $($dbs) --result-file $($SicherungsPfadTemp)\$($db).sql" write-host "Parameter $($arguments)" -ForegroundColor Yellow Start-Process -FilePath "mysqldump.exe" -ArgumentList $arguments -Wait } ####################################################################################################################### #Call backup task for every db #target must be online if (test-path -Path $SicherungsPfadFinal ) { FOREACH ($db in $Datenbanken) { [string]$db = $db $db = ($db.replace("[","")) $db = ($db.replace("]","")) If ($db -ne "tempdb" -and $db -ne "master" -and $db -ne "model" -and $db -ne "msdb") { Write-Host "Sicherung von $db" Backup-SQLDatabases -instanzen $Servername -dbs $db } } ####################################################################################################################### #move dir incl. backup files to sto01 write-host $SicherungsPfadTemp Move-Item -Path $SicherungsPfadTemp -Destination $SicherungsPfadFinal -Force } Else { Write-Host "Target is offline!" }