ja-JP/about_Experimental_Features.help.txt
|
TOPIC about_Experimental_Features 簡単な説明 実験的な機能を、PowerShell や PowerShell モジュールの既存の安定した機能と 共存させる仕組みを説明します。 詳細な説明 PowerShell の実験的機能のサポートは、実験的な機能を、PowerShell や PowerShell モジュールの既存の安定した機能と共存させる仕組みを提供します。 実験的機能とは、設計が確定していない機能です。この機能は、ユーザーが テストしてフィードバックを提供できるように提供されています。実験的機能が 確定すると、設計の変更は破壊的変更になります。変更が破壊的になる可能性が あるため、実験的機能は運用環境での使用を意図したものではありません。 実験的機能は既定で無効になっており、システムのユーザーまたは管理者が 明示的に有効にする必要があります。 有効な実験的機能は、すべてのユーザー向けには $PSHOME の powershell.config.json ファイルに、特定のユーザー向けにはそのユーザー固有 の構成ファイルに一覧表示されます。 注: ユーザー構成ファイルで有効にした実験的機能は、システム構成ファイルに 一覧表示された実験的機能よりも優先されます。 Experimental 属性 コードを実験的なものとして宣言するには、Experimental 属性を使用します。 実験的機能の名前と、その機能が有効な場合に実行するアクションを指定して Experimental 属性を宣言するには、次の構文を使用します。 [Experimental(NameOfExperimentalFeature, ExperimentAction)] モジュールの場合、NameOfExperimentalFeature は <modulename>.<experimentname> の形式に従う必要があります。ExperimentAction パラメーターは指定する必要があり、有効な値は次のものだけです。 - Show は、機能が有効な場合にこの実験的機能を表示することを意味します。 - Hide は、機能が有効な場合にこの実験的機能を非表示にすることを意味します。 C# で記述されたモジュールで実験的機能を宣言する 実験的機能フラグを使用したいモジュール作成者は、Experimental 属性を使用 して、コマンドレットを実験的として宣言できます。 [Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)] [Cmdlet(Verbs.Invoke, "WebRequest")] public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... } PowerShell で記述されたモジュールで実験的機能を宣言する PowerShell で記述されたモジュールでも、Experimental 属性を使用して実験的 コマンドレットを宣言できます。 function Enable-SSHRemoting { [Experimental("MyRemoting.PSSSHRemoting", "Show")] [CmdletBinding()] param() ... } 実験的機能に関するメタデータは、モジュールマニフェストに保持されます。 モジュールから実験的機能を公開するには、モジュールマニフェストの PrivateData.PSData.ExperimentalFeatures プロパティを使用します。 ExperimentalFeatures プロパティは、機能の名前と説明を含むハッシュテーブル の配列です。 たとえば、次のようになります。 PrivateData = @{ PSData = @{ ExperimentalFeatures = @( @{ Name = "PSWebCmdletV2" Description = "Rewrite the web cmdlets for better performance" }, @{ Name = "PSRestCmdletV2" Description = "Rewrite the REST API cmdlets for better performance" } ) } } 相互排他的な実験的機能 実験的機能が、既存の機能や別の実験的機能と並行して共存できない場合が あります。 たとえば、既存のコマンドレットをオーバーライドする実験的コマンドレットを 持つことができます。2 つのバージョンは並べて共存できません。 ExperimentAction.Hide 設定により、2 つのコマンドレットのうち一度に 1 つ だけを有効にできます。 この例では、新しい実験的な Invoke-WebRequest コマンドレットを作成します。 InvokeWebRequestCommand には実験的でない実装が含まれます。 InvokeWebRequestCommandV2 にはコマンドレットの実験的バージョンが含まれます。 ExperimentAction.Hide を使用すると、2 つの機能のうち一度に 1 つだけを 有効にできます。 [Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Show)] [Cmdlet(Verbs.Invoke, "WebRequest")] public class InvokeWebRequestCommandV2 : WebCmdletBaseV2 { ... } [Experimental("MyWebCmdlets.PSWebCmdletV2", ExperimentAction.Hide)] [Cmdlet(Verbs.Invoke, "WebRequest")] public class InvokeWebRequestCommand : WebCmdletBase { ... } MyWebCmdlets.PSWebCmdletV2 実験的機能が有効な場合、既存の InvokeWebRequestCommand 実装は非表示になり、InvokeWebRequestCommandV2 が Invoke-WebRequest の実装を提供します。 これにより、ユーザーは新しいコマンドレットを試してフィードバックを提供し、 必要に応じて実験的でないバージョンに戻すことができます。 コマンドレットの実験的パラメーター Experimental 属性は、個々のパラメーターにも適用できます。これにより、 まったく新しいコマンドレットではなく、既存のコマンドレットに対する実験的な パラメーターのセットを作成できます。 C# の例を次に示します。 [Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Show)] [Parameter(ParameterSet = "NewCompilation")] public CompilationParameters CompileParameters { ... } [Experimental("MyModule.PSNewAddTypeCompilation", ExperimentAction.Hide)] [Parameter()] public CodeDom CodeDom { ... } PowerShell スクリプトでの別の例を次に示します。 param( [Experimental("MyModule.PSNewFeature", "Show")] [string] $NewName, [Experimental("MyModule.PSNewFeature", "Hide")] [string] $OldName ) 実験的機能が有効かどうかを確認する コード内では、適切なアクションを実行する前に、実験的機能が有効かどうかを 確認する必要があります。System.Management.Automation.ExperimentalFeature クラスの静的な IsEnabled() メソッドを使用して、実験的機能が有効かどうかを 判断できます。 C# の例を次に示します。 if (ExperimentalFeature.IsEnabled("MyModule.MyExperimentalFeature")) { // code specific to the experimental feature } PowerShell スクリプトでの例を次に示します。 if ([ExperimentalFeature]::IsEnabled("MyModule.MyExperimentalFeature")) { # code specific to the experimental feature } 関連項目 Disable-ExperimentalFeature Enable-ExperimentalFeature Get-ExperimentalFeature Using Experimental Features (/powershell/scripting/learn/experimental-features) ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |