Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Från och med version 1.6.0 ger PowerShellGet och PowerShell-galleriet stöd för taggning av versioner som är större än 1.0.0 som en förhandsversion. Före den här funktionen var förhandsversionspaket begränsade till att ha en version som började med 0. Målet med dessa funktioner är att ge bättre stöd för SemVer v1.0.0-versionshanteringskonventionen utan att bryta bakåtkompatibiliteten med PowerShell-versionerna 3 och senare, eller befintliga versioner av PowerShellGet. Det här avsnittet fokuserar på skriptspecifika funktioner. Motsvarande funktioner för moduler finns i avsnittet Versioner av förhandsversionsmodulen . Med hjälp av dessa funktioner kan utgivare identifiera ett skript som version 2.5.0-alpha och senare släppa en produktionsklar version 2.5.0 som ersätter förhandsversionen.
På en hög nivå omfattar funktionerna för förhandsversionsskriptet:
- Lägga till ett PrereleaseString-suffix i versionssträngen i skriptmanifestet. När skripten publiceras till PowerShell-galleriet extraheras dessa data från manifestet och används för att identifiera förhandsversionspaket.
- Att skaffa förhandsversionspaket kräver att du lägger till -AllowPrerelease flagga i PowerShellGet-kommandona Find-Script, Install-Script, Update-Script och Save-Script. Om flaggan inte anges visas inte förhandsversionspaket.
- Skriptversioner som visas av Find-Script, Get-InstalledScript och i PowerShell-galleriet visas med PrereleaseString, som i 2.5.0-alpha.
Detaljer om funktionerna finns nedan.
Identifiera en skriptversion som en förhandsversion
PowerShellFå stöd för förhandsversioner är enklare för skript än moduler. Versionshantering av skript stöds endast av PowerShellGet, så det finns inga kompatibilitetsproblem som orsakas av att lägga till förhandsversionssträngen. Om du vill identifiera ett skript i PowerShell-galleriet som en förhandsversion lägger du till ett förhandsversionssuffix i en korrekt formaterad versionssträng i skriptets metadata.
Ett exempelavsnitt i ett skriptmanifest med en förhandsversion skulle se ut så här:
<#PSScriptInfo
.VERSION 3.2.1-alpha12
.GUID
...
#>
Om du vill använda ett förhandsversionssuffix måste versionssträngen uppfylla följande krav:
- Ett förhandsversionssuffix kan bara anges när versionen är 3 segment för Major.Minor.Build. Detta är i linje med SemVer v1.0.0
- Prerelease-suffixet är en sträng som börjar med ett bindestreck och kan innehålla alfanumeriska ASCII-tecken [0-9A-Za-z-]
- Endast SemVer v1.0.0-förhandsversionssträngar stöds för närvarande, så förhandsversionssuffixet får inte innehålla antingen punkt eller + [.+], som tillåts i SemVer 2.0
- Exempel på PrereleaseString-strängar som stöds är: -alpha, -alpha1, -BETA, -update20171020
Förhandsversioner av versionshantering påverkar sorteringsordning och installationsmappar
Sorteringsordningen ändras när du använder en förhandsversion, vilket är viktigt när du publicerar till PowerShell-galleriet och när du installerar skript med hjälp av PowerShellGet-kommandon. Om det finns två skriptversioner med versionsnumret baseras sorteringsordningen på strängdelen efter bindestrecket. Version 2.5.0-alpha är alltså mindre än 2.5.0-beta, vilket är mindre än 2.5.0-gamma. Om två skript har samma versionsnummer, och endast ett har en PrereleaseString, antas skriptet utan förhandsversionssuffixet vara den produktionsklara versionen och sorteras som en större version än förhandsversionen. Som ett exempel, när man jämför utgåvorna 2.5.0 och 2.5.0-beta, kommer 2.5.0-versionen att betraktas som den större av de två.
När du publicerar till PowerShell-galleriet måste som standard den version av skriptet som publiceras ha en större version än någon tidigare publicerad version som finns i PowerShell-galleriet. En utgivare kan uppdatera version 2.5.0-alpha med 2.5.0-beta eller med 2.5.0 (utan suffix för förhandsversion).
Hitta och hämta förhandsversionspaket med PowerShellGet-kommandon
Att hantera förhandsversionspaket med hjälp av PowerShellGet Find-Script-, Install-Script-, Update-Script- och Save-Script-kommandona kräver att du lägger till -AllowPrerelease flaggan. Om -AllowPrerelease anges inkluderas förhandsversionspaket om de finns. Om -AllowPrerelease flagga inte anges visas inte förhandsversionspaket.
De enda undantagen från detta i PowerShellGet-skriptkommandona är Get-InstalledScript och vissa fall med Uninstall-Script.
- Get-InstalledScript visar alltid automatiskt förhandsversionsinformationen i versionssträngen om den finns.
- Uninstall-Script avinstallerar som standard den senaste versionen av ett skript, om ingen version har angetts. Det beteendet har inte förändrats. Men om en förhandsversion anges med
-RequiredVersionkrävs .-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 tar bort den aktuella versionen av ett skript när -RequiredVersion inte anges. Om -RequiredVersion anges och är en förhandsversion måste -AllowPrerelease läggas till i kommandot.
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
Mer information
PowerShell Gallery