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
PowerShell Gallery