Invoke-EulandaDmsMigration #
ÜBERSICHT #
Verschiebt DMS-Ordner nach einem Plan aus Get-EulandaDmsMigrationPlan an ihren neuen Platz.
SYNTAX #
Invoke-EulandaDmsMigration [-InputObject] <object[]> [[-StagingFolder] <string>]
BESCHREIBUNG #
Verarbeitet die Zeilen mit Status Move und Merge sowie Orphan, wenn der Plan mit -OrphanFolder einen Aufbewahrungsort eingetragen hat. Alle anderen bleiben unangetastet. Zum Schluss werden die alten Sammelordner entfernt, wenn sie leer geworden sind (z. B. Rechnung aus DMS 2.0); Ordner mit Inhalt bleiben stehen. Die Registry ändert diese Funktion nicht, das macht Set-EulandaDmsConfig. Beides gehört zeitlich zusammen: Solange Ordner und Konfiguration nicht zueinander passen, legt EULANDA neue Dokumente nach dem alten Schema ab. Deshalb nur laufen lassen, wenn niemand mit EULANDA arbeitet.
Der Ablauf hat zwei Durchgänge:
- Parken: Jeder Ordner wird in einen Zwischenordner im Basisordner verschoben (
_migration_<Zeitstempel>\<Nr>), zuerst die Unterobjekte, dann ihre Eltern. Auf derselben Freigabe ist das ein Umbenennen und geht schnell. Schlägt ein Schritt fehl, etwa weil eine Datei geöffnet ist, wandert alles bereits Geparkte zurück und die Funktion bricht mit einer Meldung ab. Der Bestand ist dann unverändert. - Einsortieren: Aus dem Zwischenordner geht jeder Ordner an sein Ziel, zuerst die Eltern, dann die Unterobjekte. Gibt es das Ziel schon, wird zusammengeführt. Eine Datei, die es am Ziel schon gibt, wird nicht überschrieben; sie bleibt im Zwischenordner und die Zeile bekommt den Status
Conflict.
Das Parken löst auch Ringe auf: Wird z. B. der Artikel mit der Nummer 1100 nach seiner Id 1 benannt und zugleich der Artikel mit der Id 1100 nach dieser, wäre der Zielordner des zweiten noch belegt. Über den Zwischenordner kommen beide richtig an.
Vorher sichern: die Registry unter \VENDOR\esol\MODULES\DMS exportieren und den Basisordner kopieren.
PARAMETER #
-InputObject #
Type: object[]
Zeilen aus Get-EulandaDmsMigrationPlan, auch über die Pipeline. Eine mit Import-Csv wieder eingelesene Liste funktioniert ebenso; so lässt sich der Plan vorher prüfen und von Hand kürzen.
-StagingFolder #
Type: string
Zwischenordner. Vorgabe: _migration_<Zeitstempel> im Basisordner. Er muss auf derselben Freigabe liegen, sonst wird aus jedem Umbenennen eine Kopie.
AUSGABEN #
PSCustomObject
Je verarbeiteter Zeile DataObject, Id, OldPath, NewPath, Status (Moved, Merged, Conflict, SourceMissing, Error) und Detail.
BEISPIELE #
# Plan erstellen, prüfen, ausführen
$plan = Get-EulandaDmsMigrationPlan -Udl 'C:\EULANDA\Eulanda.udl' `
-BaseFolder '\\NAS\Oeffentlich\EULANDA_DMS' -FolderNameMode Id
$plan | Group-Object Status | Format-Table Count, Name
$log = $plan | Invoke-EulandaDmsMigration
$log | Where-Object Status -ne 'Moved'
# Geprüfte Liste aus einer CSV verarbeiten
Import-Csv C:\Temp\dms-plan.csv -Delimiter ';' | Invoke-EulandaDmsMigration
# Nur anzeigen, was passieren würde
$plan | Invoke-EulandaDmsMigration -WhatIf