簡単な説明
PowerShell Desired State Configuration (DSC) 機能の簡単な概要について説明します。
長い説明
DSC は PowerShell の管理プラットフォームであり、ソフトウェア サービスの構成データの展開と管理、およびこれらのサービスが実行される環境の管理を可能にします。
DSC には、ソフトウェア環境の状態を構成する方法を宣言によって指定するために使用できる一連の PowerShell 言語拡張機能、新しいコマンドレット、およびリソースが用意されています。 また、既存の構成を保守し、管理するための手段も提供します。
DSC は PowerShell 4.0 で導入されています。
DSC の詳細については、「 PowerShell Desired State Configuration Overviewを参照してください。
クラスを使用した DSC リソースの開発
PowerShell 5.0 以降では、クラスを使用して DSC リソースを開発できます。 詳細については、「 about_Classes」および「 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 リソース
構成スクリプトでは、次の組み込みリソースを使用できます。
| Name | プロパティ |
|---|---|
| ファイル | {DestinationPath、Attributes、Checksum、Content...} |
| アーカイブ | {Destination,Path, Checksum, Credential...} |
| Environment | {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 コマンドレットを実行します。
Note
PowerShell バージョン 7.0 より前のバージョンでは、Get-DscResource によるクラス ベースの DSC リソースの検出は行われません。
このトピックの例では、File リソースと WindowsFeature リソースを使用する方法を示します。 リソースで使用できるすべてのプロパティを表示するには、PowerShell ISE の構成スクリプト内の resource キーワード (ファイルなど) にカーソルを挿入し、 CTRL+SPACEBAR を押したままにします。
その他のリソースを検索する
PowerShell と DSC ユーザー コミュニティ、および Microsoft によって作成された他の多くの利用可能な DSC リソースをダウンロード、インストール、および学習できます。 PowerShell ギャラリーにアクセスして、使用可能な DSC リソースを参照して確認します。
こちらも参照ください
PowerShell