Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od wersji 1.6.0, PowerShellGet i Galeria programu PowerShell zapewniają obsługę tagowania wersji większych niż 1.0.0 jako wersji wstępnej. Przed tą funkcją pakiety przedpremierowe były ograniczone do wersji rozpoczynającej się od 0. Celem tych funkcji jest zapewnienie większej obsługi konwencji przechowywania wersji SemVer w wersji 1.0.0 bez przerywania zgodności z poprzednimi wersjami programu PowerShell w wersji 3 lub nowszej lub istniejącymi wersjami programu PowerShellGet. Ten temat koncentruje się na funkcjach specyficznych dla modułu. Równoważne funkcje skryptów znajdują się w temacie Wersje wstępne skryptów . Korzystając z tych funkcji, wydawcy mogą zidentyfikować moduł lub skrypt jako wersję 2.5.0-alpha, a następnie wydać wersję 2.5.0 gotową do produkcji, która zastępuje wersję wstępną.
Na wysokim poziomie funkcje modułu wersji wstępnej obejmują:
- Dodanie ciągu wersji wstępnej do sekcji PSData manifestu modułu identyfikuje moduł jako wersję wstępną. Po opublikowaniu modułu w Galeria programu PowerShell te dane są wyodrębniane z manifestu i używane do identyfikowania pakietów wersji wstępnej.
- Uzyskiwanie pakietów w wersji wstępnej wymaga dodania
-AllowPrereleaseflagi do poleceńFind-ModulePowerShellGet ,Install-Module,Update-ModuleiSave-Module. Jeśli flaga nie zostanie określona, pakiety wersji wstępnej nie będą wyświetlane. - Wersje modułów wyświetlane przez
Find-Module,Get-InstalledModulei w Galeria programu PowerShell będą wyświetlane jako pojedynczy ciąg z dołączonym ciągiem wersji wstępnej, tak jak w wersji 2.5.0-alpha.
Szczegółowe informacje na temat funkcji znajdują się poniżej.
Te zmiany nie mają wpływu na obsługę wersji modułu, która jest wbudowana w program PowerShell i jest zgodna z programem PowerShell 3.0, 4.0 i 5.
Identyfikowanie wersji modułu jako wersji wstępnej
Obsługa wersji wstępnych programu PowerShellGet wymaga użycia dwóch pól w manifeście modułu:
- ModuleVersion uwzględniona w manifeście modułu musi być wersją 3-częściową, jeśli jest używana wersja wstępna, i musi być zgodna z istniejącymi wersjami programu PowerShell. Format wersji to A.B.C, gdzie A, B i C są liczbami całkowitymi.
- Ciąg wersji wstępnej jest określony w manifeście modułu w sekcji PSData w obszarze PrivateData.
Szczegółowe wymagania dotyczące ciągu wersji wstępnej znajdują się poniżej.
Przykładowa sekcja manifestu modułu, która definiuje moduł jako wersję wstępną, wygląda następująco:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Szczegółowe wymagania dotyczące ciągu wersji wstępnej to:
- Ciąg wersji wstępnej można określić tylko wtedy, gdy ModuleVersion to 3 segmenty dla elementu Major.Minor.Build. Jest to zgodne z SemVer v1.0.0.
- Łącznik jest ogranicznikiem między numerem kompilacji a ciągiem wersji wstępnej. Łącznik może być dołączony do ciągu wersji wstępnej tylko jako pierwszy znak.
- Ciąg wersji wstępnej może zawierać tylko znaki alfanumeryczne ASCII [0-9A-Za-z-]. Najlepszym rozwiązaniem jest rozpoczynanie ciągu wersji wstępnej od znaku alfanumerycznego, ponieważ łatwiej będzie zidentyfikować, że jest to wersja wstępna podczas skanowania listy pakietów.
- Obecnie obsługiwane są tylko ciągi wersji wstępnej SemVer 1.0.0. Ciąg wersji wstępnej nie może zawierać kropki ani + [.+], które są dozwolone w SemVer 2.0.
- Przykłady obsługiwanego ciągu wersji wstępnej to: -alpha, -alpha1, -BETA -update20171020
Wpływ wersji wstępnej na kolejność sortowania i foldery instalacyjne
Kolejność sortowania zmienia się w przypadku korzystania z wersji wstępnej, co jest ważne podczas publikowania w Galeria programu PowerShell i podczas instalowania modułów przy użyciu poleceń PowerShellGet. Jeśli ciąg wersji wstępnej jest określony dla dwóch modułów, kolejność sortowania jest oparta na części ciągu następującej po łączniku. Tak więc wersja 2.5.0-alpha jest mniejsza niż 2.5.0-beta, która jest mniejsza niż 2.5.0-gamma. Jeśli dwa moduły mają ten sam ModuleVersion i tylko jeden z nich ma ciąg wersji wstępnej, zakłada się, że moduł bez ciągu wersji wstępnej jest wersją gotową do produkcji i zostanie posortowany jako lepsza wersja niż wersja wstępna (która zawiera ciąg wersji wstępnej). Na przykład, porównując wersje 2.5.0 i 2.5.0-beta, wersja 2.5.0 zostanie uznana za większą z nich.
Podczas publikowania w Galeria programu PowerShell domyślnie wersja publikowanego modułu musi mieć większą wersję niż dowolna wcześniej opublikowana wersja, która znajduje się w Galeria programu PowerShell.
Znajdowanie i pobieranie pakietów wersji wstępnej przy użyciu poleceń PowerShellGet
Radzenie sobie z pakietami wersji wstępnej przy użyciu poleceń PowerShellGet Find-Module, Install-Module, Update-Module i Save-Module wymaga dodania flagi -AllowPrerelease. Jeśli zostanie określona -AllowPrerelease, pakiety wersji wstępnej zostaną dołączone, jeśli są obecne. Jeśli flaga -AllowPrerelease nie zostanie określona, pakiety wersji wstępnej nie będą wyświetlane.
Jedynymi wyjątkami od tej zasady w poleceniach modułu PowerShellGet są Get-InstalledModule, a niektóre przypadki z Uninstall-Module.
- Get-InstalledModule zawsze automatycznie wyświetla informacje o wersji wstępnej w ciągu wersji dla modułów.
- Uninstall-Module domyślnie odinstaluje najnowszą wersję modułu, jeśli nie zostanie określona żadna wersja . To zachowanie się nie zmieniło. Jeśli jednak wersja wstępna zostanie określona przy użyciu polecenia -RequiredVersion, będzie -AllowPrerelease wymagane.
Przykłady
Załóżmy, że Galeria programu PowerShell ma moduł TestPackage w wersji 1.8.0 i 1.9.0-alpha. Jeśli -AllowPrerelease nie zostanie określony, zostanie zwrócona tylko wersja 1.8.0.
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...
Aby zainstalować wersję wstępną, zawsze określ wartość -AllowPrerelease. Określenie ciągu wersji wstępnej nie jest wystarczające.
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
Poprzednie polecenie nie powiodło się-AllowPrerelease ponieważ nie zostało określone. Dodanie -AllowPrerelease zakończy się sukcesem.
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...
Instalacja równoległa wersji modułu, które różnią się tylko ze względu na określoną wersję wstępną, nie jest obsługiwana. Podczas instalowania modułu przy użyciu programu PowerShellGet różne wersje tego samego modułu są instalowane obok siebie przez utworzenie nazwy folderu przy użyciu elementu ModuleVersion. ModuleVersion, bez ciągu wersji wstępnej, jest używany dla nazwy folderu. Jeśli użytkownik zainstaluje MyModule w wersji 2.5.0-alpha, zostanie on zainstalowany w folderze MyModule\2.5.0 . Jeśli następnie użytkownik zainstaluje 2.5.0-beta, wersja 2.5.0-beta zastąpi zawartość folderu MyModule\2.5.0. Jedną z zalet tego podejścia jest to, że nie ma potrzeby odinstalowywania wersji wstępnej po zainstalowaniu wersji gotowej do produkcji. Poniższy przykład pokazuje, czego można się spodziewać:
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 usunie najnowszą wersję modułu, gdy nie zostanie -RequiredVersion dostarczony. Jeśli określono -RequiredVersion i jest to wersja wstępna, należy dodać -AllowPrerelease do polecenia.
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...
Więcej szczegółów
- Wstępne wersje skryptów
- find-module
- Zainstaluj-Moduł
- modułu zapisywania
- Update-Module
- Get-InstalledModule
- Odinstaluj moduł
PowerShell Gallery