バージョン 1.6.0 以降、PowerShellGet と PowerShell ギャラリーでは、プレリリースとして 1.0.0 より古いバージョンにタグを付けるためのサポートが提供されます。 この機能より前は、プレリリース パッケージは 0 で始まるバージョンに制限されていました。 これらの機能の目的は、PowerShell バージョン 3 以降、または既存のバージョンの PowerShellGet との下位互換性を損なうことなく、 SemVer v1.0.0 バージョン管理規則のサポートを強化することです。 このトピックでは、モジュール固有の機能に焦点を当てます。 スクリプトの同等の機能については、「 スクリプトのプレリリース バージョン 」トピックを参照してください。 これらの機能を使用すると、パブリッシャーはモジュールまたはスクリプトをバージョン 2.5.0-alpha として識別し、後でプレリリース バージョンに取って代わる運用対応バージョン 2.5.0 をリリースできます。
大まかに言うと、プレリリース モジュールの機能は次のとおりです。
- モジュール マニフェストの PSData セクションにプレリリース文字列を追加すると、モジュールがプレリリース バージョンとして識別されます。 モジュールが PowerShell ギャラリーに発行されると、このデータはマニフェストから抽出され、プレリリース パッケージの識別に使用されます。
- プレリリース パッケージを取得するには、PowerShellGet コマンド
Find-Module、Install-Module、Update-Module、Save-Moduleにフラグ-AllowPrerelease追加する必要があります。 フラグが指定されていない場合、プレリリースパッケージは表示されません。 -
Find-Module、Get-InstalledModule、PowerShell ギャラリーに表示されるモジュール バージョンは、2.5.0-alpha と同様に、プレリリース文字列が追加された 1 つの文字列として表示されます。
機能の詳細は以下のとおりです。
これらの変更は、PowerShell に組み込まれているモジュール バージョンのサポートには影響せず、PowerShell 3.0、4.0、および 5 と互換性があります。
プレリリースとしてのモジュールバージョンの識別
プレリリース バージョンの PowerShellGet サポートでは、モジュール マニフェスト内で次の 2 つのフィールドを使用する必要があります。
- プレリリース バージョンを使用する場合は、モジュール マニフェストに含まれる ModuleVersion が 3 部構成のバージョンである必要があり、既存の PowerShell バージョン管理に準拠する必要があります。 バージョン形式は A.B.C で、A、B、C はすべて整数です。
- プレリリース文字列は、モジュール マニフェストの PrivateData の PSData セクションで指定されます。
プレリリース文字列の詳細な要件は以下のとおりです。
モジュールをプレリリースとして定義するモジュール マニフェストのセクションの例は、次のようになります。
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
プレリリース文字列の詳細な要件は次のとおりです。
- プレリリース文字列は、ModuleVersion が Major.Minor.Build の 3 セグメントの場合にのみ指定できます。 これは SemVer v1.0.0 と一致しています。
- ハイフンは、ビルド番号とプレリリース文字列の間の区切り文字です。 ハイフンは、プレリリース文字列の最初の文字としてのみ含めることができます。
- プレリリース文字列には、ASCII 英数字 [0-9A-Za-z-] のみを含めることができます。 プレリリース文字列は、パッケージのリストをスキャンするときにプレリリースバージョンであることを識別しやすく、英字で始めることをお勧めします。
- 現時点では、SemVer v1.0.0 プレリリース文字列のみがサポートされています。 プレリリース文字列には、SemVer 2.0 で許可されているピリオドまたは + [.+] を含める ことはできません 。
- サポートされているプレリリース文字列の例は、-alpha、-alpha1、-BETA、-update20171020 です。
プレリリースのバージョン管理が並べ替え順序とインストール フォルダーに与える影響
プレリリース バージョンを使用する場合の並べ替え順序の変更は、PowerShell ギャラリーに発行するときや、PowerShellGet コマンドを使用してモジュールをインストールするときに重要です。 プレリリース文字列が 2 つのモジュールに指定されている場合、並べ替え順序はハイフンに続く文字列部分に基づきます。 したがって、バージョン 2.5.0-alpha は 2.5.0-beta 未満であり、2.5.0-gamma 未満です。 2 つのモジュールに同じ ModuleVersion があり、1 つだけにプレリリース文字列がある場合、プレリリース文字列のないモジュールは本番環境対応バージョンと見なされ、プレリリース バージョン (プレリリース文字列を含む) よりも高いバージョンとして並べ替えられます。 たとえば、リリース 2.5.0 と 2.5.0-beta を比較する場合、2.5.0 バージョンは 2 つのうち大きい方と見なされます。
PowerShell ギャラリーに発行する場合、既定では、発行されるモジュールのバージョンは、PowerShell ギャラリーにある以前に発行されたバージョンよりも高いバージョンである必要があります。
PowerShellGet コマンドを使用したプレリリース パッケージの検索と取得
PowerShellGet Find-Module、Install-Module、Update-Module、および Save-Module コマンドを使用してプレリリース パッケージを処理するには、-AllowPrerelease フラグを追加する必要があります。 -AllowPrerelease を指定すると、プレリリースパッケージが存在する場合は含まれます。 フラグ -AllowPrerelease 指定しない場合、プレリリースパッケージは表示されません。
PowerShellGet モジュール コマンドでのこれに対する唯一の例外は、Get-InstalledModule と、Uninstall-Module の場合です。
- Get-InstalledModule は常に、モジュールのバージョン文字列にプレリリース情報を自動的に表示します。
- バージョンが指定 されていない 場合、Uninstall-Module デフォルトでモジュールの最新バージョンをアンインストールします。 その行動は変わっていません。 ただし、プレリリース バージョンが -RequiredVersion を使用して指定されている場合は、-AllowPrerelease が必要になります。
例示
PowerShell ギャラリーに TestPackage モジュール バージョン 1.8.0 と 1.9.0-alpha があるとします。
-AllowPrerelease指定しない場合は、バージョン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...
プレリリースをインストールするには、常に -AllowPrerelease を指定します。 プレリリース バージョン文字列を指定するだけでは不十分です。
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
-AllowPrerelease が指定されていないため、前のコマンドは失敗しました。
-AllowPrereleaseを追加すると成功します。
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...
指定されたプレリリースによってのみ異なるモジュールのバージョンのサイドバイサイドインストールはサポートされていません。 PowerShellGet を使用してモジュールをインストールする場合、ModuleVersion を使用してフォルダー名を作成することで、同じモジュールの異なるバージョンが並行してインストールされます。 プレリリース文字列を含まない ModuleVersion は、フォルダー名に使用されます。 ユーザーが MyModule バージョン 2.5.0-alpha をインストールすると、 MyModule\2.5.0 フォルダーにインストールされます。 その後、ユーザーが 2.5.0-beta をインストールすると、2.5.0-beta バージョンがフォルダーMyModule\2.5.0の内容を上書きします。 このアプローチの利点の 1 つは、本番環境対応バージョンをインストールした後、プレリリース バージョンをアンインストールする必要がないことです。 次の例は、何が予想されるかを示しています。
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 は、モジュールの最新バージョンが提供されていない場合 -RequiredVersion 削除します。 -RequiredVersion が指定され、プレリリースである場合は、コマンドに -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.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...
詳細
- プレリリース スクリプトのバージョン
- Find-Module
- Install-Module
- Save-Module
- Update-Module
- Get-InstalledModule の
- アンインストールモジュール
PowerShell Gallery