Előzetes modulverziók

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 modulspecifikus funkciókkal foglalkozik. A szkriptek megfelelő funkciói a Szkriptek előzetes verziói témakörben találhatók. Ezen funkciók használatával a közzétevők 2.5.0-alpha verzióként azonosíthatnak egy modult vagy szkriptet, é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 modul funkciói a következők:

  • Prerelease-sztring hozzáadása a moduljegyzék PSData szakaszához a modult előzetes verzióként azonosítja. Amikor a modul közzé van téve a PowerShell-galéria, a rendszer kinyeri ezeket az adatokat a jegyzékből, és felhasználja az előzetes csomagok azonosítására.
  • Az előzetes csomagok beszerzéséhez jelölőt kell hozzáadni -AllowPrerelease a PowerShellGet parancshoz Find-Module, , Install-Module, Update-Moduleés Save-Module. Ha a jelző nincs megadva, az előzetes csomagok nem jelennek meg.
  • A , Get-InstalledModuleés a PowerShell-galéria által Find-Modulemegjelenített modulverziók egyetlen sztringként jelennek meg, hozzáfűzve a Prerelease sztringgel, a 2.5.0-alfa értékhez hasonlóan.

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

Ezek a módosítások nem érintik a PowerShellbe beépített modulverzió-támogatást, és kompatibilisek a PowerShell 3.0-val, 4.0-val és 5-tel.

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

A PowerShellGet előzetes verziókhoz való támogatásához két mezőt kell használnia a moduljegyzékben:

  • A moduljegyzékben szereplő ModuleVersion verziónak 3 részes verziónak kell lennie, ha előzetes verziót használ, és meg kell felelnie a PowerShell meglévő verziójának. A verzióformátum az A.B.C, ahol az A, a B és a C egész szám.
  • A Prerelease sztring a moduljegyzékben, a PrivateData PSData szakaszában van megadva.

A Prerelease sztring részletes követelményei az alábbiak.

A moduljegyzék egy olyan példaszakasza, amely előzetesként definiál egy modult, a következőhöz hasonlóan nézne ki:

@{
    ModuleVersion = '2.5.0'
    #---
    PrivateData = @{
        PSData = @{
            Prerelease = 'alpha'
        }
    }
}

A Prerelease sztring részletes követelményei a következők:

  • Előzetes sztring csak akkor adható meg, ha a ModuleVersion a Major.Minor.Build 3 szegmense. Ez igazodik a SemVer 1.0.0-s verzióhoz.
  • A kötőjel a Build szám és a Prerelease sztring közötti elválasztó. A Prerelease sztringben csak kötőjel szerepelhet első karakterként.
  • A prerelease sztring csak ASCII alfanumerikus [0-9A-Za-z-] értéket tartalmazhat. Ajánlott a Prerelease sztringet alfa karakterrel kezdeni, mivel könnyebb lesz megállapítani, hogy ez egy előzetes verzió a csomagok listájának vizsgálatakor.
  • Jelenleg csak a SemVer 1.0.0-s verzió előtti sztringek támogatottak. Az előzetes sztring nem tartalmazhat sem pontot, sem + [.+], amelyek a SemVer 2.0-s verziójában engedélyezettek.
  • A támogatott prerelease-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 modulok PowerShellGet-parancsokkal történő telepítésekor. Ha a Prerelease sztring két modulhoz van megadva, 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 modul ugyanazzal a ModuleVersion-lal rendelkezik, és csak egy rendelkezik Prerelease-sztringgel, akkor a prerelease sztring nélküli modul lesz az éles üzemre kész verzió, és nagyobb verzióként lesz rendezve, mint a prerelease-verzió (amely tartalmazza a Prerelease-sztringet). 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 modul verziójának nagyobb verzióval kell rendelkeznie, mint a PowerShell-galéria korábban közzétett verziói.

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

A PowerShellGet Find-Module, Install-Module, Update-Module és Save-Module parancsokkal végzett előzetes csomagok kezeléséhez hozzá kell adni az -AllowPrerelease jelzőt. 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 modulparancsai közül az egyetlen kivétel a Get-InstalledModule, egyes esetekben pedig az Uninstall-Module.

  • Get-InstalledModule mindig automatikusan megjeleníti a modulok verziósztringjének előzetes adatait.
  • Uninstall-Module alapértelmezés szerint eltávolítja a modul legújabb verzióját, ha nincs megadva verzió . Ez a viselkedés nem változott. Ha azonban egy előzetes verziót a -RequiredVersion használatával ad meg, a -AllowPrerelease parancsra lesz szükség.

Példák

Tegyük fel, hogy a PowerShell-galéria a TestPackage modul 1.8.0-s és 1.9.0-alfa verzióit tartalmazza. Ha -AllowPrerelease nincs megadva, a rendszer csak az 1.8.0-s verziót adja vissza.

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...

Előzetes telepítéshez mindig adja meg az -AllowPrerelease értéket. Az előzetes verziósztring megadása nem elegendő.

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

Az előző parancs nem sikerült, mert a -AllowPrerelease nincs megadva. A hozzáadás -AllowPrerelease sikeres lesz.

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...

A modul olyan verzióinak párhuzamos telepítése, amelyek csak a megadott előzetes verzió miatt különböznek, nem támogatottak. Ha a PowerShellGet használatával telepít egy modult, ugyanazon modul különböző verziói egymás mellett települnek egy mappanév létrehozásával a ModuleVersion használatával. A ModuleVersion az előzetes sztring nélkül használható a mappanévhez. Ha egy felhasználó telepíti a MyModule 2.5.0-alpha verzióját, az a mappába MyModule\2.5.0 lesz telepítve. Ha a felhasználó ezután telepíti a 2.5.0-bétaverziót, a 2.5.0-bétaverzió felülírja a mappa MyModule\2.5.0tartalmát. Ennek a megközelítésnek az egyik előnye, hogy az éles üzemre kész verzió telepítése után nincs szükség az előzetes verzió telepítésének megszüntetésére. Az alábbi példa bemutatja, mire számíthat:

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 eltávolítja a modul legújabb 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-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...

További részletek