Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab Version 1.6.0 bieten PowerShellGet und der PowerShell-Katalog Unterstützung für das Markieren von Versionen größer als 1.0.0 als Vorabversion. Vor dieser Funktion waren Vorabversionspakete auf eine Version beschränkt, die mit 0 beginnt. Das Ziel dieser Funktionen besteht darin, eine bessere Unterstützung für die Versionskonvention von SemVer v1.0.0 bereitzustellen, ohne die Abwärtskompatibilität mit PowerShell-Versionen 3 und höher oder vorhandenen Versionen von PowerShellGet zu beeinträchtigen. Dieses Thema konzentriert sich auf die modulspezifischen Funktionen. Die entsprechenden Funktionen für Skripts finden Sie im Thema Vorabversionen von Skripts . Mithilfe dieser Funktionen können Publisher ein Modul oder Skript als Version 2.5.0-alpha identifizieren und später eine produktionsbereite Version 2.5.0 veröffentlichen, die die Vorabversion ersetzt.
Zu den Funktionen des Vorabversionsmoduls gehören auf hoher Ebene:
- Wenn Sie dem PSData-Abschnitt des Modulmanifests eine Vorabversionszeichenfolge hinzufügen, wird das Modul als Vorabversion identifiziert. Wenn das Modul im PowerShell-Katalog veröffentlicht wird, werden diese Daten aus dem Manifest extrahiert und zur Identifizierung von Vorabversionspaketen verwendet.
- Zum Abrufen von Vorabversionspaketen muss
-AllowPrereleaseden PowerShellGet-BefehlenFind-Module,Install-Module,Update-ModuleundSave-Module. Wenn das Flag nicht angegeben ist, werden Vorabversionspakete nicht angezeigt. - Modulversionen, die von
Find-Moduleund im PowerShell-Katalog angezeigt werden,Get-InstalledModulewerden als einzelne Zeichenfolge angezeigt, an die die Vorabversionszeichenfolge angehängt wird, wie in 2.5.0-alpha.
Details zu den Funktionen finden Sie weiter unten.
Diese Änderungen wirken sich nicht auf die Unterstützung von Modulversionen aus, die in PowerShell integriert ist, und sind mit PowerShell 3.0, 4.0 und 5 kompatibel.
Identifizieren einer Modulversion als Vorabversion
Für die PowerShellGet-Unterstützung für Vorabversionen ist die Verwendung von zwei Feldern im Modulmanifest erforderlich:
- Die im Modulmanifest enthaltene ModuleVersion muss eine 3-teilige Version sein, wenn eine Vorabversion verwendet wird, und muss der vorhandenen PowerShell-Versionsverwaltung entsprechen. Das Versionsformat wäre A.B.C, wobei A, B und C ganze Zahlen sind.
- Die Zeichenfolge für die Vorabversion wird im Modulmanifest im PSData-Abschnitt von PrivateData angegeben.
Detaillierte Anforderungen für die Prerelease-Zeichenfolge finden Sie unten.
Ein Beispielabschnitt eines Modulmanifests, der ein Modul als Vorabversion definiert, würde wie folgt aussehen:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Die detaillierten Anforderungen für die Prerelease-Zeichenfolge lauten:
- Eine Vorabversionszeichenfolge kann nur angegeben werden, wenn die ModuleVersion aus 3 Segmenten für Major.Minor.Build besteht. Dies entspricht SemVer v1.0.0.
- Ein Bindestrich ist das Trennzeichen zwischen der Build-Nummer und der Prerelease-Zeichenfolge. Ein Bindestrich kann nur als erstes Zeichen in die Prerelease-Zeichenfolge eingefügt werden.
- Die Prerelease-Zeichenfolge darf nur alphanumerische ASCII-Zeichen [0-9A-Za-z-] enthalten. Es empfiehlt sich, die Prerelease-Zeichenfolge mit einem Alpha-Zeichen zu beginnen, da es beim Scannen einer Liste von Paketen einfacher ist, zu erkennen, dass es sich um eine Prerelease-Version handelt.
- Derzeit werden nur SemVer v1.0.0-Vorabversionszeichenfolgen unterstützt. Die Zeichenfolge für die Vorabversion darf weder einen Punkt noch + [.+] enthalten, die in SemVer 2.0 zulässig sind.
- Beispiele für unterstützte Prerelease-Zeichenfolgen sind: -alpha, -alpha1, -BETA -update20171020
Auswirkungen der Vorabversionierung auf die Sortierreihenfolge und die Installationsordner
Die Sortierreihenfolge ändert sich, wenn eine Vorabversion verwendet wird, was bei der Veröffentlichung im PowerShell-Katalog und bei der Installation von Modulen mit PowerShellGet-Befehlen wichtig ist. Wenn die Zeichenfolge Prerelease für zwei Module angegeben wird, basiert die Sortierreihenfolge auf dem Zeichenfolgenteil, der auf den Bindestrich folgt. Version 2.5.0-alpha ist also kleiner als 2.5.0-beta, was kleiner als 2.5.0-gamma ist. Wenn zwei Module über dieselbe ModuleVersion verfügen und nur eines über eine Vorabversionszeichenfolge verfügt, wird davon ausgegangen, dass das Modul ohne die Vorabversionszeichenfolge die produktionsbereite Version ist, und wird als höhere Version als die Vorabversionsversion (die die Vorabversionszeichenfolge enthält) sortiert. Beim Vergleich der Versionen 2.5.0 und 2.5.0-beta wird beispielsweise die Version 2.5.0 als die größere der beiden Versionen betrachtet.
Bei der Veröffentlichung im PowerShell-Katalog muss die Version des Moduls, die veröffentlicht wird, standardmäßig eine höhere Version aufweisen als jede zuvor veröffentlichte Version, die sich im PowerShell-Katalog befindet.
Suchen und Abrufen von Vorabversionspaketen mithilfe von PowerShellGet-Befehlen
Für den Umgang mit Vorabversionspaketen mithilfe der Befehle PowerShellGet Find-Module, Install-Module, Update-Module und Save-Module muss das -AllowPrerelease-Flag hinzugefügt werden. Wenn -AllowPrerelease angegeben ist, werden Vorabversionspakete eingeschlossen, sofern sie vorhanden sind. Wenn -AllowPrerelease Flag nicht angegeben ist, werden Vorabversionspakete nicht angezeigt.
Die einzigen Ausnahmen hiervon in den PowerShellGet-Modulbefehlen sind Get-InstalledModule und einige Fälle mit Uninstall-Module.
- Get-InstalledModule zeigen die Vorabversionsinformationen immer automatisch in der Versionszeichenfolge für Module an.
- Uninstall-Module wird standardmäßig die neueste Version eines Moduls deinstallieren, wenn keine Version angegeben ist. Dieses Verhalten hat sich nicht geändert. Wenn jedoch eine Vorabversion mit -RequiredVersion angegeben wird, ist -AllowPrerelease erforderlich.
Examples
Angenommen, der PowerShell-Katalog verfügt über die TestPackage-Modulversionen 1.8.0 und 1.9.0-alpha. Wenn -AllowPrerelease nicht angegeben, wird nur Version 1.8.0 zurückgegeben.
find-module TestPackage
Version Name Repository Description
------- ---- ---------- -----------
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
find-module TestPackage -AllowPrerelease
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
Um eine Vorabversion zu installieren, geben Sie immer -AllowPrerelease an. Die Angabe einer Zeichenfolge für eine Vorabversion ist nicht ausreichend.
Install-module TestPackage -RequiredVersion 1.9.0-alpha
PackageManagement\Find-Package : No match was found for the specified search criteria and module name 'TestPackage'.
Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.6.0\PSModule.psm1:1455 char:3
+ PackageManagement\Find-Package @PSBoundParameters | Microsoft ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage
Der vorherige Befehl ist fehlgeschlagen, da -AllowPrerelease nicht angegeben wurde. Das Hinzufügen -AllowPrerelease führt zum Erfolg.
Install-module TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
Get-InstalledModule TestPackage
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
Die parallele Installation von Versionen eines Moduls, die sich nur durch die angegebene Vorabversion unterscheiden, wird nicht unterstützt. Bei der Installation eines Moduls mit PowerShellGet werden verschiedene Versionen desselben Moduls nebeneinander installiert, indem ein Ordnername mithilfe von ModuleVersion erstellt wird. Die ModuleVersion ohne die Vorabversionszeichenfolge wird für den Ordnernamen verwendet. Wenn ein Benutzer MyModule Version 2.5.0-alpha installiert, wird es in den MyModule\2.5.0 Ordner installiert. Wenn der Benutzer dann 2.5.0-beta installiert, überschreibt die Version 2.5.0-beta den Inhalt des Ordners MyModule\2.5.0. Ein Vorteil dieses Ansatzes besteht darin, dass die Vorabversion nach der Installation der produktionsbereiten Version nicht deinstalliert werden muss. Das folgende Beispiel zeigt, was Sie erwartet:
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> find-module TestPackage -AllowPrerelease
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Update-Module TestPackage -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
Uninstall-Module entfernt die neueste Version eines Moduls, wenn -RequiredVersion nicht bereitgestellt wird. Wenn -RequiredVersion angegeben ist und es sich um eine Vorabversion handelt, muss -AllowPrerelease dem Befehl hinzugefügt werden.
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
2.0.0-alpha1 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta
Uninstall-Module : The '-AllowPrerelease' parameter must be specified when using the Prerelease string in
MinimumVersion, MaximumVersion, or RequiredVersion.
At line:1 char:1
+ Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Uninstall-Module], ArgumentException
+ FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninstall-Module
C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
2.0.0-alpha1 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Uninstall-Module TestPackage
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
Weitere Details
PowerShell Gallery