Remove-EulandaModuleVersion #
ÜBERSICHT #
Räumt ältere Versionsordner eines Moduls weg, mit Sicherung als ZIP.
SYNTAX #
Remove-EulandaModuleVersion [-Root] <string> [-Name] <string> [[-Keep] <int>] [[-BackupDir]
<string>] [[-KeepBackups] <int>] [-IncludeBroken]
BESCHREIBUNG #
Gegenstück zu Install-EulandaModuleRelease: Der Selbst-Update legt additiv neue Versionsordner an, damit der laufende Server bis zum Neustart unberührt bleibt. Danach sollen sich die Altstände nicht anhäufen: viele Versionsordner machen jede Auflösung von RequiredModules teuer (gemessen bis zu sieben Sekunden je Import).
Regeln, jede aus einem echten Vorfall:
- Behalten wird die jüngste Version (
-Keep, Vorgabe 1), entfernt wird nur, was strikt älter ist. Ein bewusst installierter neuerer Stand bleibt stehen. - Entwickler-Verknüpfungen (Junction oder Symlink auf ein Quell-Repo) werden nie angefasst, weder der Modulordner noch ein Versionsordner.
- Vor dem Löschen wird jeder Ordner als ZIP in
-BackupDirgesichert (<Modul>-<Version>.zip), von diesen Sicherungen bleiben die jüngsten-KeepBackupserhalten. So ist eine Rücknahme möglich, ohne den Ordner behalten zu müssen. - Ordner mit ungültigem Versionsnamen, die trotzdem ein Manifest tragen (BOM-Unfall
1.0.233), werden nur mit-IncludeBrokenentfernt. PowerShell ignoriert sie ohnehin, aber wer aufräumt, soll wissen, was da liegt.
Ein Ordner, der nicht gelöscht werden kann (in Benutzung), landet unter Skipped mit Grund. Die Funktion wirft nicht.
PARAMETER #
-Root #
Type: string
Modulwurzel.
-Name #
Type: string
Modulname.
-Keep #
Type: int
Default: 1
Zahl der jüngsten Versionen, die stehen bleiben. Vorgabe 1.
-BackupDir #
Type: string
Default: ''
Ordner für die ZIP-Sicherungen. Leer = keine Sicherung.
-KeepBackups #
Type: int
Default: 2
Zahl der Sicherungen je Modul, die im BackupDir bleiben. Vorgabe 2.
-IncludeBroken #
Type: switch
Auch Ordner mit ungültigem Versionsnamen entfernen, sofern sie ein Manifest des Moduls enthalten.
AUSGABEN #
pscustomobject
Name, Kept, Removed, BackedUp, Skipped, Error.
BEISPIELE #
Remove-EulandaModuleVersion -Root "$env:ProgramFiles\WindowsPowerShell\Modules" -Name EulandaXrest -BackupDir C:\ProgramData\Eulanda\EulandaXclient\update\backup
Remove-EulandaModuleVersion -Root (Get-UserPs5ModulePath) -Name EulandaXtools -Keep 2 -WhatIf