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

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 関数を呼び出すのと同じ方法で構成ブロックを呼び出し、定義した可能性のあるパラメーターを渡します (上の例では 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...}
Archive {Destination、Path、Checksum、Credential...}
環境 {Name、DependsOn、Ensure、Path...}
Group {GroupName、Credential、DependsOn、Description...}
ログ {Message、DependsOn、PsDscRunAsCredential}
パッケージ {Name、Path、ProductId、Arguments...}
レジストリ {Key、ValueName、DependsOn、Ensure...}
スクリプト {GetScript、SetScript、TestScript、Credential...}
サービス {Name、BuiltInAccount、Credential、Dependencies...}
ユーザー {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 の構成スクリプト内の resource キーワード (ファイルなど) にカーソルを挿入し、Ctrl キーを押しながら Space キーを押します。

その他のリソースを見つける

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

関連項目

PowerShell Desired State Configurationの概要

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

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