Share via


about_DesiredStateConfiguration

概要

PowerShell Desired State Configuration (DSC) 機能について簡単に説明します。

詳細説明

DSC は PowerShell の管理プラットフォームであり、ソフトウェア サービスの構成データの展開と管理、およびこれらのサービスが実行される環境の管理を可能にします。

DSC には、ソフトウェア環境の状態を構成する方法を宣言的に指定するために使用できる一連の PowerShell 言語拡張機能、新しいコマンドレット、およびリソースが用意されています。 また、既存の構成を保守し、管理するための手段も提供します。

DSC は PowerShell 4.0 で導入されています。

DSC の詳細については、TechNet ライブラリの「PowerShell Desired State Configurationの概要」を参照してください。

クラスを使用した DSC リソースの開発

PowerShell 5.0 以降では、クラスを使用して DSC リソースを開発できます。 詳細については、「 about_Classes」および「Microsoft TechNet の PowerShell クラスを使用したカスタム DSC リソースの記述 」を参照してください。

DSC の使用

DSC を使用して環境を構成するには、まず Configuration キーワード (keyword)を使用して PowerShell スクリプト ブロックを定義し、その後に識別子を続けて、ブロックを区切る中かっこのペアを定義します。 構成ブロック内では、環境内の各ノード (コンピューター) に必要な構成状態を指定するノード ブロックを定義できます。 ノード ブロックは、Node キーワード (keyword)で始まり、その後にターゲット コンピューターの名前が続きます。変数を指定できます。 コンピューター名の後に、ノード ブロックを区切る中かっこを付けます。 ノード ブロック内では、リソース ブロックを定義して特定のリソースを構成できます。 リソース ブロックは、リソースの型名で始まり、そのブロックに指定する識別子の後に、次の例に示すように、ブロックを区切る中かっこが続きます。

Configuration MyWebConfig {
    # Parameters are optional
    param ($MachineName, $WebsiteFilePath)
    # A Configuration block can have one or more Node blocks
    Node $MachineName
    {
        # Next, specify one or more resource blocks
        # WindowsFeature is one of the resources you can use in a Node block
        # This example ensures the Web Server (IIS) role is installed
        WindowsFeature IIS
        {
            # To ensure that the role is not installed, set Ensure to "Absent"
            Ensure = "Present"
            Name = "Web-Server" # Use the Name property from Get-WindowsFeature
        }

        # You can use the File resource to create files and folders
        # "WebDirectory" is the name you want to use to refer to this instance
        File WebDirectory
        {
            Ensure = "Present"  # You can also set Ensure to "Absent"
            Type = "Directory" # Default is "File"
            Recurse = $true
            SourcePath = $WebsiteFilePath
            DestinationPath = "C:\inetpub\wwwroot"

            # Ensure that the IIS block is successfully run first before
            # configuring this resource
            DependsOn = "[WindowsFeature]IIS"  # Use for dependencies
        }
    }
}

構成を作成するには、PowerShell 関数を呼び出すのと同じ方法で Configuration ブロックを呼び出し、定義した可能性のあるパラメーターを渡します (上記の例では 2 つ)。 たとえば、この場合は次のようになります。

MyWebConfig -MachineName "TestMachine" -WebsiteFilePath `
  "\\filesrv\WebFiles" -OutputPath "C:\Windows\system32\temp"
# OutputPath is optional

これにより、指定したパスにあるノードごとに MOF ファイルが生成されます。 これらの MOF ファイルは、各ノードに必要な構成を指定します。 次に、次のコマンドレットを使用して、構成 MOF ファイルを解析し、各ノードに対応する構成を送信し、それらの構成を適用します。 クラス ベースの DSC リソース用に個別の MOF ファイルを作成する必要はありません。

Start-DscConfiguration -Verbose -Wait -Path "C:\Windows\system32\temp"

DSC を使用して構成状態を維持する

DSC では、構成はべき等です。 つまり、DSC を使用して同じ構成を複数回適用すると、結果の構成状態は常に同じになります。 このため、環境内のノードが目的の構成状態から逸脱している可能性があると思われる場合は、同じ DSC 構成をもう一度適用して、目的の状態に戻すことができます。 状態が目的の状態からずれたリソースのみに対処するために、構成スクリプトを変更する必要はありません。

次の例は、特定のノードの構成の実際の状態が、ノードで適用された最後の DSC 構成からドリフトしているかどうかを確認する方法を示しています。 この例では、ローカル コンピューターの構成を確認しています。

$session = New-CimSession -ComputerName "localhost"
Test-DscConfiguration -CimSession $session

組み込みの DSC リソース

構成スクリプトでは、次の組み込みリソースを使用できます。

名前 プロパティ
ファイル {DestinationPath, Attributes, Checksum, Content...}
アーカイブ {Destination, Path, Checksum, Credential...}
環境 {Name, DependsOn, Ensure, Path...}
グループ化 {GroupName, Credential, DependsOn, Description...}
ログ {Message, DependsOn, PsDscRunAsCredential}
パッケージ {Name, Path, ProductId, Arguments...}
レジストリ {Key、ValueName、DependsOn、Ensure...}
スクリプト {GetScript、SetScript、TestScript、Credential...}
サービス {Name, BuiltInAccount, Credential, Dependencies...}
User {UserName, DependsOn, Description, Disabled...}
WaitForAll {NodeName、ResourceName、DependsOn、PsDscRunAsC...}
WaitForAny {NodeName、ResourceName、DependsOn、PsDscRunAsC...}
WaitForSome {NodeCount、NodeName、ResourceName、DependsOn...}
WindowsFeature {Name, Credential, DependsOn, Ensure...}
WindowsOptionalFeature {Name, DependsOn, Ensure, LogLevel...}
WindowsProcess {引数、パス、資格情報、DependsOn...}

システムで使用可能な DSC リソースの一覧を取得するには、Get-DscResource コマンドレットを実行します。

このトピックの例では、File リソースと WindowsFeature リソースの使用方法を示します。 リソースで使用できるすべてのプロパティを表示するには、PowerShell ISE の構成スクリプト内のリソース キーワード (keyword) (ファイルなど) にカーソルを挿入し、Ctrl キーを押しながら Space キーを押します。

その他のリソースを検索する

PowerShell と DSC ユーザー コミュニティ、および Microsoft によって作成された、他の多くの利用可能な DSC リソースをダウンロード、インストール、および学習できます。 PowerShell ギャラリーにアクセスして、使用可能な DSC リソースを参照して学習します。

関連項目

PowerShell Desired State Configurationの概要

組み込みの PowerShell Desired State Configuration リソース

カスタム PowerShell Desired State Configuration リソースをビルドする