Freigeben über


Vorabversionen von Skripten

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 skriptspezifischen Features. Die entsprechenden Funktionen für Module finden Sie im Thema Vorabversions-Modulversionen . Mithilfe dieser Funktionen können Publisher ein 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 Prerelease-Skripts gehören auf hoher Ebene:

  • Hinzufügen eines PrereleaseString-Suffixes zur Versionszeichenfolge im Skriptmanifest. Wenn das Skript im PowerShell-Katalog veröffentlicht wird, werden diese Daten aus dem Manifest extrahiert und zur Identifizierung von Vorabversionspaketen verwendet.
  • Zum Abrufen von Vorabversionspaketen muss den PowerShellGet-Befehlen Find-Script, Install-Script, Update-Script und Save-Script -AllowPrerelease Flag hinzugefügt werden. Wenn das Flag nicht angegeben ist, werden Vorabversionspakete nicht angezeigt.
  • Skriptversionen, die von Find-Script, Get-InstalledScript und im PowerShell-Katalog angezeigt werden, werden mit der PrereleaseString angezeigt, wie in 2.5.0-alpha.

Details zu den Funktionen finden Sie weiter unten.

Identifizieren einer Skriptversion als Vorabversion

PowerShellDie Unterstützung für Vorabversionen ist für Skripts einfacher als für Module. Die Versionsverwaltung von Skripts wird nur von PowerShellGet unterstützt, sodass es keine Kompatibilitätsprobleme gibt, die durch das Hinzufügen der Vorabversionszeichenfolge verursacht werden. Um ein Skript im PowerShell-Katalog als Vorabversion zu identifizieren, fügen Sie einer ordnungsgemäß formatierten Versionszeichenfolge in den Skriptmetadaten ein Vorabversionssuffix hinzu.

Ein Beispielabschnitt eines Skriptmanifests mit einer Vorabversion würde wie folgt aussehen:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Um ein Vorabversionssuffix zu verwenden, muss die Versionszeichenfolge die folgenden Anforderungen erfüllen:

  • Ein Vorabversionssuffix kann nur angegeben werden, wenn die Version aus 3 Segmenten für Major.Minor.Build besteht. Dies entspricht SemVer v1.0.0
  • Das Suffix der Vorabversion ist eine Zeichenfolge, die mit einem Bindestrich beginnt und alphanumerische ASCII-Zeichen [0-9A-Za-z-] enthalten kann.
  • Derzeit werden nur SemVer v1.0.0-Vorabversionszeichenfolgen unterstützt, daher darf das Suffix der Vorabversion weder einen Punkt noch + [.+] enthalten, die in SemVer 2.0 zulässig sind
  • Beispiele für unterstützte PrereleaseString-Zeichenfolgen sind: -alpha, -alpha1, -BETA -update20171020

Auswirkungen der Vorabversionierung auf die Sortierreihenfolge und die Installationsordner

Änderungen in der Sortierreihenfolge bei Verwendung einer Vorabversion, was bei der Veröffentlichung im PowerShell-Katalog und bei der Installation von Skripts mit PowerShellGet-Befehlen wichtig ist. Wenn zwei Skriptversionen mit der Versionsnummer vorhanden sind, 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 Skripts die gleiche Versionsnummer haben und nur eines über einen PrereleaseString verfügt, wird davon ausgegangen, dass es sich bei dem Skript ohne das Suffix Prerelease um die produktionsbereite Version handelt, und es wird als höhere Version als die Prerelease-Version 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 Skripts, die veröffentlicht wird, standardmäßig eine höhere Version aufweisen als jede zuvor veröffentlichte Version, die sich im PowerShell-Katalog befindet. Ein Herausgeber kann Version 2.5.0-alpha mit 2.5.0-beta oder mit 2.5.0 (ohne Vorabversionssuffix) aktualisieren.

Suchen und Abrufen von Vorabversionspaketen mithilfe von PowerShellGet-Befehlen

Für den Umgang mit Vorabversionspaketen mithilfe der Befehle PowerShellGet Find-Script, Install-Script, Update-Script und Save-Script 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-Skriptbefehlen sind Get-InstalledScript und einige Fälle mit Uninstall-Script.

  • Get-InstalledScript zeigen die Vorabversionsinformationen immer automatisch in der Versionszeichenfolge an, wenn diese vorhanden sind.
  • Uninstall-Script deinstallieren standardmäßig die neueste Version eines Skripts, wenn keine Version angegeben ist. Dieses Verhalten hat sich nicht geändert. Wenn jedoch eine Vorabversion mit -RequiredVersionangegeben wird, ist erforderlich. -AllowPrerelease

Examples

# Assume the PowerShell Gallery has TestPackage versions 1.8.0 and 1.9.0-alpha.
# If -AllowPrerelease is not specified, only version 1.8.0 will be returned.
C:\windows\system32> Find-Script TestPackage

Version        Name                                Repository           Description
-------        ----                                ----------           -----------
1.8.0          TestPackage                         PSGallery            Package used to validate changes to the PowerShe...

C:\windows\system32> Find-Script TestPackage -AllowPrerelease

Version        Name                                Repository           Description
-------        ----                                ----------           -----------
1.9.0-alpha    TestPackage                         PSGallery            Package used to validate changes to PowerShe...

# To install a prerelease, you must specify -AllowPrerelease. Specifying a prerelease version string is not sufficient.

C:\windows\system32> Install-Script TestPackage -RequiredVersion 1.9.0-alpha

PackageManagement\Find-Package : No match was found for the specified search criteria and script name 'TestPackage'.
Try Get-PSRepository to see all available registered script 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

# The previous command failed because -AllowPrerelease was not specified.
# Adding -AllowPrerelease will result in success.

C:\windows\system32> Install-Script TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
C:\windows\system32> Get-InstalledScript TestPackage

Version         Name                                Repository           Description
-------         ----                                ----------           -----------
1.9.0-alpha     TestPackage                         PSGallery            Package used to validate changes to PowerShe...

# Note that Get-InstalledScript shows the prerelease version.
# If -RequiredVersion is not specified, all installed scripts will be displayed by Get-InstalledScript

Uninstall-Script entfernt die aktuelle Version eines Skripts, wenn -RequiredVersion nicht angegeben wird. Wenn -RequiredVersion angegeben ist und es sich um eine Vorabversion handelt, muss -AllowPrerelease dem Befehl hinzugefügt werden.

C:\windows\system32> Get-InstalledScript TestPackage

Version         Name                                Repository           Description
-------         ----                                ----------           -----------
1.9.0-alpha     TestPackage                         PSGallery            Package used to validate changes to PowerShe...

C:\windows\system32> Uninstall-Script TestPackage -RequiredVersion 1.9.0-alpha
Uninstall-Script: The '-AllowPrerelease' parameter must be specified when using the Prerelease string in
MinimumVersion, MaximumVersion, or RequiredVersion.
At line:1 char:1
+ Uninstall-Script TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Uninstall-Script], ArgumentException
    + FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninstall-script


C:\windows\system32> Uninstall-Script TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
# Since script versions are not installed side-by-side, the above could be simply "Uninstall-Script TestPackage"

C:\windows\system32> Get-Installedscript TestPackage
PackageManagement\Get-Package : No match was found for the specified search criteria and script names 'testpackage'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.5.0.0\PSModule.psm1:4088 char:9
+         PackageManagement\Get-Package @PSBoundParameters | Microsoft. ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package], Exception
    + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage

Weitere Details