Remove-EulandaXtoolsLegacyVersion #
ÜBERSICHT #
Entfernt Versionsordner von EulandaXtools bis 1.0.3 aus den Modulpfaden des Benutzers.
SYNTAX #
Remove-EulandaXtoolsLegacyVersion [[-Root] <string[]>] [[-ReportOnlyRoot] <string[]>] [[-LogPath]
<string>]
BESCHREIBUNG #
EulandaXtools hatte bis 1.0.3 eine eigene Funktion Expand-Archive ohne den Parameter -Path (ab 1.0.4 heißt sie Expand-Zip). Liegt so eine Fassung noch im Benutzer-Modulpfad, findet PowerShell sie vor dem Befehl aus Microsoft.PowerShell.Archive, und jedes Skript, das Expand-Archive -Path ohne Modulnamen aufruft, scheitert mit „Es wurde kein Parameter gefunden, der dem Parameternamen “Path” entspricht“ (XFacture #83). Die Funktion räumt diese Altstände weg.
Entfernt wird nur, was eindeutig alt ist:
- ein Versionsordner unter
EulandaXtools, dessen Name eine Version kleiner als 1.0.4 ist und dessenEulandaXtools.psd1dieselbeModuleVersionträgt; - nur in den Modulpfaden des Benutzers (
Documents\WindowsPowerShell\ModulesundDocuments\PowerShell\Modules, auch wenn die Dokumente nach OneDrive umgeleitet sind).
Nur gemeldet, nie gelöscht, wird:
- eine Fassung, die flach ohne Versionsordner im Modulordner liegt;
- ein Ordner ohne Manifest, mit unlesbarer oder abweichender
ModuleVersion; - eine Verknüpfung (Junction oder Symlink), etwa eines Entwicklers;
- die gerade geladene Fassung;
- eine alte Fassung unter
Program Files(dort fehlen ohne Administratorrechte die Schreibrechte).
1.0.4 und alles darüber bleibt immer stehen, auch wenn es veraltet ist: Bei einem Kunden läuft ein altes EDI-Modul, das nur mit EulandaXtools 1.0.4 geht.
Die Funktion wirft nicht. Ein Ordner, der sich nicht löschen lässt (Datei gesperrt), steht mit Grund unter Failed.
PARAMETER #
-Root #
Type: string[]
Modulwurzeln, in denen aufgeräumt wird. Vorgabe: die beiden Benutzer-Modulpfade aus Get-UserPs5ModulePath und Get-UserPs7ModulePath.
-ReportOnlyRoot #
Type: string[]
Modulwurzeln, in denen alte Fassungen nur gemeldet werden. Vorgabe: die Modulordner unter Program Files und Program Files (x86).
-LogPath #
Type: string
Default: ''
Datei, an die das Protokoll angehängt wird (UTF-8). Leer = kein Protokoll, nur -Verbose.
AUSGABEN #
pscustomobject
Removed (entfernte Ordner), Reported (nur gemeldet, mit Grund), Failed (Löschen gescheitert, mit Grund).
BEISPIELE #
Remove-EulandaXtoolsLegacyVersion -WhatIf
Zeigt, welche Ordner entfernt würden.
$r = Remove-EulandaXtoolsLegacyVersion -LogPath "$env:TEMP\xtools-cleanup.log"
$r.Removed