DSC リソース

適用対象: Windows PowerShell 4.0 以上。

概要

Desired State Configuration (DSC) リソースは、DSC 構成の構成要素を提供します。 リソースは、構成 (スキーマ) 可能なプロパティを公開し、また、指定されたことを実現するためにローカル構成マネージャー (LCM) が呼び出す PowerShell スクリプト関数が含まれています。

リソースでは、ファイルのように汎用的なものをモデル化したり、IIS サーバー設定のように具体的なものをモデル化したりできます。 リソースなどのグループは、DSC モジュールに結合されます。DSC モジュールでは、リソースの使用目的を識別するためのメタデータが含まれている移植可能な構造にすべての必須ファイルが編成されます。

各リソースには、Configuration でリソースを使用するために必要な構文を決定する*スキーマがあります。 リソースのスキーマは、次のように定義できます。

  • Schema.Mof ファイル:ほとんどのリソースでは、マネージド オブジェクト フォーマットを使用して、schema.mof ファイルに "スキーマ" を定義します。
  • <Resource Name>.schema.psm1 ファイル:複合リソースでは、パラメーター ブロックを使用して、<ResourceName>.schema.psm1 ファイルにスキーマを定義します。
  • <Resource Name>.psm1 ファイル:クラス ベースの DSC リソースは、クラス定義で "スキーマ" を定義します。 構文の項目は Class プロパティとして表されます。 詳細については、「about_Remote」を参照してください。

DSC リソースの構文を取得するには、Syntax パラメーターを指定して、Get-DSCResource コマンドレットを使用します。 この使用法は、Syntax パラメーターを指定して、Get-Command を使用して、コマンドレットの構文を取得する場合と似ています。 表示される出力には、指定したリソースのリソース ブロックに使用されているテンプレートが示されます。

Get-DscResource -Syntax Service

このリソースの構文は今後変更される可能性がありますが、表示される出力は以下ような出力になります。 コマンドレットの構文と同様に、角かっこで囲まれた "キー" は省略可能です。 型には、各キーで想定されているデータの型を指定します。

Note

Ensure キーは既定値が "Present" なので省略可能です。

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Note

PowerShell バージョン 7.0 より前のバージョンでは、Get-DscResource によるクラス ベースの DSC リソースの検出は行われません。

Configuration 内では、スプーラー サービスが実行されていることを確認 (Ensure) するため、Service リソース ブロックを次のようにすることができます。

Note

Configuration でリソースを使用する前に、Import-DSCResource を使用してリソースをインポートする必要があります。

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Configuration には、同じリソースの種類の複数インスタンスを含めることができます。 各インスタンスには一意の名前を付ける必要があります。 次の例では、"DHCP" サービスを構成するために 2 つ目の Service リソース ブロックが追加されています。

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Note

PowerShell 5.0 以降、IntelliSense が DSC に追加されました。 この新機能を使用すると、Tab キーと Ctrl+Space キーを使用してキー名をオートコンプリートすることができます。

Tab 補完機能を使用したリソース IntelliSense

リソースの種類

Windows には組み込みリソースが付属しており、Linux には OS 固有のリソースがあります。 ノード間の依存関係のリソース、パッケージ管理リソース、およびコミュニティ所有の管理リソースがあります。 前述の手順を使用して、これらのリソースの構文とその使用方法を判断できます。 これらのリソースを提供するページは、「関連項目」にアーカイブされています。

Windows 組み込みリソース

ノード間の依存関係リソース

パッケージ管理リソース

Linux リソース