Powershell/Hermes/Adobe-Stamps-Restore.ps1

88 lines
3.6 KiB
PowerShell

<#
.SYNOPSIS
Stellt Adobe Acrobat Custom Stamps aus einer Sicherung wieder her.
.DESCRIPTION
Lädt alle Stempel aus dem Ordner "StampsBackup" innerhalb des angegebenen
Quellpfads zurueck in den lokalen Adobe Stamps-Ordner des Benutzers.
Dabei werden alle Dateien ueberschrieben (Merge), Unterordner bleiben erhalten.
.PARAMETER SourcePath
Ordner, der die Sicherung enthaelt (der Ordner, der "StampsBackup" enthaelt).
.EXAMPLE
.\Adobe-Stamps-Restore.ps1 -SourcePath "D:\Sicherung\AdobeStamps"
#>
param (
[Parameter(Mandatory=$true)]
[string]$SourcePath
)
# Pruefen, ob der Sicherungspfad existiert
if (-not (Test-Path $SourcePath)) {
Write-Error "Der angegebene Wiederherstellungspfad '$SourcePath' existiert nicht."
exit 1
}
# Lokaler Pfad zum Adobe Stamps-Ordner
$adobeStampsPath = Join-Path $env:APPDATA "Adobe\Acrobat\DC\Stamps"
# Quell-Ordner mit den gesicherten Stempeln
$backupFolder = Join-Path $SourcePath "StampsBackup"
# Pruefen, ob die Sicherung vorhanden ist
if (-not (Test-Path $backupFolder)) {
Write-Error "Der Sicherungsordner '$backupFolder' wurde nicht gefunden. Ist dies ein gueltiger Sicherungsordner?"
exit 1
}
try {
# Zielordner sicherstellen (falls Chrome/Adobe neu installiert wurde)
if (-not (Test-Path $adobeStampsPath)) {
New-Item -Path $adobeStampsPath -ItemType Directory -Force | Out-Null
Write-Host "Der Adobe Stamps-Ordner '$adobeStampsPath' wurde erstellt."
}
# 1. Adobe Prozesse beenden, falls geöffnet (zwingend erforderlich, damit Dateien überschrieben werden können)
$adobeProcesses = Get-Process -Name "AcroRd32","Acrobat","AcrobatDC" -ErrorAction SilentlyContinue
if (-not $adobeProcesses) {
# Fallback: alle Prozesse mit "Acrobat" oder "AcroRd" im Namen suchen
$adobeProcesses = Get-Process | Where-Object { $_.ProcessName -match "Acrobat|AcroRd" }
}
if ($adobeProcesses) {
Write-Host "Adobe Acrobat/Reader ist geöffnet. Schließe Adobe, um Datenkorruption zu vermeiden..."
$adobeProcesses | Stop-Process -Force
Start-Sleep -Seconds 2 # Kurze Pause für sauberen Abschluss
}
# 2. Dateien und Ordner aus der Sicherung zurueckkopieren
$stamps = Get-ChildItem -Path $backupFolder -Force
foreach ($item in $stamps) {
$targetPath = Join-Path $adobeStampsPath $item.Name
if ($item.PSIsContainer) {
# Es ist ein Ordner (z.B. Dynamic) -> rekursiv kopieren/erstellen
if (Test-Path $targetPath) {
Copy-Item -Path $item.FullName -Destination $adobeStampsPath -Force -Recurse -ErrorAction Stop
} else {
Copy-Item -Path $item.FullName -Destination $adobeStampsPath -Force -Recurse -ErrorAction Stop
}
Write-Host " Ordner '$($item.Name)' wiederhergestellt."
} else {
# Es ist eine Datei (Stamp PDF)
Copy-Item -Path $item.FullName -Destination $targetPath -Force -ErrorAction Stop
Write-Host " Datei '$($item.Name)' wiederhergestellt."
}
}
$restoredCount = ($stamps | Measure-Object).Count
Write-Host "Erfolgreich alle Adobe Stempel aus '$backupFolder' nach '$adobeStampsPath' wiederhergestellt."
Write-Host "Wiederhergestellte Elemente: $restoredCount"
Write-Host "Du kannst Adobe Acrobat jetzt wieder starten."
# Hinweis: Adobe Stempel werden beim nächsten Start neu geladen
Write-Host ""
Write-Host "Hinweis: Die Stempel werden beim nächsten Start von Adobe Acrobat automatisch neu geladen."
}
catch {
Write-Error "Fehler bei der Wiederherstellung der Adobe Stempel: $_"
exit 1
}