Get-EulandaModuleInventory #
ÜBERSICHT #
Inventur der installierten Eulanda-Module unter einer Modulwurzel.
SYNTAX #
Get-EulandaModuleInventory [-Root] <string> [[-Name] <string>] [-IncludeSignature]
[<CommonParameters>]
BESCHREIBUNG #
Liest je Modulordner unter Root alle Versionsordner und das Manifest der jüngsten Version, ohne das Modul zu laden. Grundlage für den Selbst-Update der X-Suite: welche Module liegen wo, in welcher Version, was fordern sie, sind sie signiert, und ist etwas davon eine Entwickler-Verknüpfung, die nie angefasst werden darf.
Das Manifest wird mit Import-PowerShellDataFile gelesen, nicht mit Test-ModuleManifest: Letzteres löst RequiredModules auf und scheitert, wenn ein gefordertes Modul in dieser Sitzung nicht auffindbar ist. Für eine Inventur wäre das die falsche Antwort.
Zwei Ablageformen werden erkannt: der übliche Versionsordner (<Root>\<Modul>\<Version>\<Modul>.psd1) und die flache Ablage einer Entwickler-Verknüpfung (<Root>\<Modul>\<Modul>.psd1, Junction auf ein Quell-Repo). Bei der flachen Ablage kommt die Version aus dem Manifest.
Unterordner, deren Name keine Versionsnummer ist, aber ein Manifest enthalten (etwa 1.0.233 aus einem BOM-Unfall), werden als BrokenFolders ausgewiesen, nicht still übergangen: PowerShell ignoriert solche Ordner beim Import, und genau deshalb müssen sie sichtbar sein.
PARAMETER #
-Root #
Type: string
Modulwurzel, z.B. C:\Program Files\WindowsPowerShell\Modules.
-Name #
Type: string
Default: 'Eulanda*'
Namensfilter mit Platzhaltern. Vorgabe Eulanda*.
-IncludeSignature #
Type: switch
Prüft zusätzlich die Authenticode-Signatur von psd1 und psm1 der jüngsten Version. SignatureStatus ist Valid, wenn beide gültig signiert sind, sonst der erste abweichende Status (NotSigned, HashMismatch, …).
AUSGABEN #
object[]
Je Modul ein Objekt mit Name, Root, Path, LatestVersion, LatestPath, Versions (absteigend, als Text), BrokenFolders, IsLink, Tags, RequiredModules (Name/Version), SignatureStatus, Signer, Manifest.
BEISPIELE #
Get-EulandaModuleInventory -Root "$env:ProgramFiles\WindowsPowerShell\Modules"
Get-EulandaModuleInventory -Root (Get-UserPs5ModulePath) -Name 'EulandaX*' -IncludeSignature |
Format-Table Name, LatestVersion, SignatureStatus, IsLink