Szkriptek előzetes verziói

Az 1.6.0-s verziótól kezdődően a PowerShellGet és a PowerShell-galéria előzetes verzióként támogatják az 1.0.0-nál nagyobb verziók címkézését. A funkció előtt az előzetes csomagok csak a 0-val kezdődő verzióra voltak korlátozva. Ezeknek a funkcióknak a célja, hogy nagyobb támogatást nyújtson a SemVer 1.0.0 verziószámozási konvencióhoz anélkül, hogy a PowerShell 3-as vagy újabb verzióival vagy a PowerShellGet meglévő verzióival kompatibilitást szakítanának meg. Ez a témakör a szkriptspecifikus funkciókkal foglalkozik. A modulok egyenértékű funkciói a Modulverziók előzetes verziókkal foglalkozó témakörben találhatók. Ezen funkciók használatával a közzétevők azonosíthatják a szkripteket 2.5.0-alpha verzióként, és később kiadhatnak egy éles használatra kész 2.5.0-s verziót, amely felülírja az előzetes verziót.

Magas szinten a prerelease szkriptfunkciók a következők:

  • PrereleaseString-utótag hozzáadása a szkriptjegyzék verziósztringéhez. Amikor a szkriptek közzé lesznek téve a PowerShell-galéria, a rendszer kinyeri ezeket az adatokat a jegyzékfájlból, és az előzetes csomagok azonosítására szolgál.
  • Az előzetes csomagok beszerzéséhez hozzá kell adni az -AllowPrerelease jelzőt a PowerShellGet parancshoz: Find-Script, Install-Script, Update-Script és Save-Script. Ha a jelző nincs megadva, az előzetes csomagok nem jelennek meg.
  • A Find-Script, a Get-InstalledScript és a PowerShell-galéria által megjelenített szkriptverziók a PrereleaseString használatával jelennek meg, a 2.5.0-alfa értékhez hasonlóan.

A funkciók részleteit alább találja.

Szkriptverzió azonosítása előzetes verzióként

A PowerShellGet az előzetes verziók támogatása egyszerűbb a szkriptek számára, mint a modulok. A szkriptek verziószámozását csak a PowerShellGet támogatja, így a prerelease sztring hozzáadása nem okoz kompatibilitási problémákat. Ha a PowerShell-galéria egy szkriptjét előreleázként szeretné azonosítani, adjon hozzá egy előleadási utótagot egy megfelelően formázott verziósztringhez a szkript metaadataiban.

Az előzetes verziójú szkriptjegyzék példaszakasza a következőhöz hasonlóan nézne ki:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Előzetes utótag használatához a verziósztringnek meg kell felelnie a következő követelményeknek:

  • Előtag csak akkor adható meg, ha a Verzió 3 szegmens a Major.Minor.Build esetében. Ez igazodik a SemVer 1.0.0-s verzióhoz
  • A prerelease utótag egy kötőjellel kezdődő sztring, amely ASCII alfanumerikát tartalmazhat [0-9A-Za-z-]
  • Jelenleg csak a SemVer v1.0.0 előreleáz sztringek támogatottak, így a prereleáz utótag nem tartalmazhat sem pontot, sem + [.+], amelyek a SemVer 2.0-s verziójában engedélyezettek
  • A támogatott PrereleaseString-sztringek például a következők: -alpha, -alpha1, -BETA, -update20171020

Az előzetes verziószámozás hatása a rendezési sorrendre és a telepítési mappákra

Rendezze a sorrend változásait egy előzetes verzió használatakor, ami fontos a PowerShell-galéria való közzétételkor és a szkriptek PowerShellGet-parancsokkal történő telepítésekor. Ha két szkriptverzió létezik a verziószámmal, a rendezési sorrend az kötőjelet követő sztringrészen alapul. Tehát a 2.5.0-alfa kevesebb, mint 2.5.0-béta, ami kevesebb, mint 2.5.0-gamma. Ha két szkript azonos verziószámmal rendelkezik, és csak az egyik rendelkezik PrereleaseString értékkel, akkor a prerelease utótag nélküli szkript lesz az éles üzemre kész verzió, és az előleadási verziónál nagyobb verzióként lesz rendezve. Például a 2.5.0-s és a 2.5.0-s bétaverzió összehasonlításakor a 2.5.0-s verzió lesz a kettő közül a nagyobb.

A PowerShell-galéria való közzétételkor alapértelmezés szerint a közzétett szkript verziójának nagyobb verziójúnak kell lennie, mint a PowerShell-galéria korábban közzétett verziói. A közzétevők frissíthetik a 2.5.0-alpha verziót 2.5.0-bétaverzióval vagy 2.5.0-s verzióval (utótag nélkül).

Előzetes csomagok keresése és beszerzése PowerShellGet-parancsokkal

A PowerShellGet Find-Script, Install-Script, Update-Script és Save-Script parancsokkal végzett előzetes csomagok kezeléséhez hozzá kell a -AllowPrerelease jelzőt hozzáadni. Ha az -AllowPrerelease beállítás meg van adva, akkor a rendszer előzetes csomagokat is tartalmaz, ha vannak. Ha az -AllowPrerelease jelölő nincs megadva, az előzetes csomagok nem jelennek meg.

A PowerShellGet-parancsprogramokban ez alól az egyetlen kivétel a Get-InstalledScript, néhány esetben pedig az Uninstall-Script.

  • Get-InstalledScript mindig automatikusan megjeleníti az előzetes adatokat a verziósztringben, ha az jelen van.
  • Uninstall-Script alapértelmezés szerint eltávolítja a szkript legújabb verzióját, ha nincs megadva verzió . Ez a viselkedés nem változott. Ha azonban egy előzetes verzió van megadva a használatával -RequiredVersion, -AllowPrerelease akkor szükség lesz rá.

Példák

# 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 eltávolítja a szkript aktuális verzióját, ha a -RequiredVersion nincs megadva. Ha a -RequiredVersion paraméter meg van adva, és előreleáz, a -AllowPrerelease parancsot hozzá kell adni a parancshoz.

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

További részletek