Szkriptek előzetes verziói

Az 1.6.0-s verziótól kezdve a PowerShellGet és a PowerShell-galéria előzetes verzióként támogatják az 1.0.0-nál nagyobb verziókat. A funkció előtt az előzetes csomagok a 0-val kezdődő verzióra korlátozódtak. Ezeknek a funkcióknak a célja, hogy nagyobb támogatást nyújtson a SemVer 1.0.0-s verziószámozási konvenciójához anélkül, hogy kompatibilitást szakítanának meg a PowerShell 3-as vagy újabb verzióival vagy a PowerShellGet meglévő verzióival. 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. Ezekkel a funkciókkal 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 az előzetes szkriptfunkciók a következők:

  • PrereleaseString utótag hozzáadása a szkript jegyzékfájljában lévő verziósztringhez. Amikor a szkripteket közzéteszi a PowerShell-galéria, a rendszer kinyeri ezeket az adatokat a jegyzékfájlból, és az előzetes csomagok azonosítására használja fel.
  • Az előzetes csomagok beszerzéséhez hozzá kell adni az -AllowPrerelease jelzőt a PowerShellGet-parancsok Find-Script, Install-Script, Update-Script és Save-Script parancsaihoz. Ha a jelölő 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 PrereleaseStringgel 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

Az előzetes verziók PowerShellGet-támogatása a szkriptek számára egyszerűbb, mint a moduloké. A szkriptek verziószámozását csak a PowerShellGet támogatja, így nincsenek kompatibilitási problémák, amelyeket az előzetes sztring hozzáadása okoz. Ha a PowerShell-galéria egy szkriptet előzetes verzióként szeretne azonosítani, adjon hozzá egy előleírás előtti utótagot egy megfelelően formázott verziósztringhez a szkript metaadataiban.

A szkriptjegyzék egy példaszakasza előzetes verzióval az alábbihoz hasonlóan néz 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
  • Az előtag egy kötőjellel kezdődő sztring, amely ASCII alfanumerikus karaktereket tartalmazhat [0-9A-Za-z-]
  • Jelenleg csak az 1.0.0-s verzió előtti SemVer-sztringek támogatottak, ezért az előtag nem tartalmazhat pontot vagy + [.+], amelyek a SemVer 2.0-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 a verziószámmal két szkriptverzió létezik, a rendezési sorrend a kötőjelet követő sztringrészen alapul. Tehát a 2.5.0-alpha verzió kevesebb, mint 2.5.0-béta, ami kevesebb, mint 2.5.0-gamma. Ha két szkript verziószáma megegyezik, és csak az egyik rendelkezik PrereleaseString előtaggal, akkor az előzetes utótag nélküli parancsfájl lesz az éles üzemre kész verzió, és a rendszer az előzetes 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ása esetén a 2.5.0-s verzió lesz a kettő közül a nagyobb.

A PowerShell-galéria való közzétételkor a közzétett szkript verziójának alapértelmezés szerint nagyobb verziójúnak kell lennie, mint a PowerShell-galéria korábban közzétett verzióknak. A közzétevők frissíthetik a 2.5.0-alpha verziót a 2.5.0-béta verzióval vagy a 2.5.0-s verzióval (elő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 parancsokat használó előzetes csomagok kezeléséhez hozzá kell adni az -AllowPrerelease jelzőt. Ha az -AllowPrerelease paraméter meg van adva, a rendszer előzetes csomagokat is tartalmaz, ha vannak. Ha az -AllowPrerelease jelző 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 információkat a verziósztringben, ha az megtalálható.
  • Uninstall-Script alapértelmezés szerint eltávolítja a parancsfájl legújabb verzióját, ha nincs megadva verzió . Ez a viselkedés nem változott. Ha azonban előzetes verziót ad meg -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 egy szkript aktuális verzióját, ha a -RequiredVersion nincs megadva. Ha a -RequiredVersion meg van adva, és előzetes verzió, az -AllowPrerelease értéket 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