DSC リソース
概要
DSC リソースは、システムの設定を管理するための標準化されたインターフェイスを提供します。 DSC リソースは、管理できるプロパティを定義し、"そうする" 呼び出しを Invoke-DscResource
する PowerShell コードを含みます。
DSC リソースは、ファイルとして汎用的なもの、または IIS サーバー設定として固有のものをモデル化できます。 関連する DSC リソースのグループは、PowerShell モジュールに結合されます。 モジュールは、DSC リソース用の移植可能なバージョン管理されたパッケージを提供し、それらに関するメタデータとドキュメントを含みます。
すべての DSC リソースには、Invoke-DscResource
または 構成で DSC リソースを使用するために必要な構文を決定するスキーマがあります。 DSC リソースのスキーマは、次の方法で定義されます。
-
<Resource Name>.psm1
ファイル: クラス ベースの DSC リソースは、クラス定義でスキーマを定義します。 構文項目はクラス プロパティとして示されます。 詳細については、about_Classesを参照してください。 -
Schema.Mof
ファイル: MOF ベースの DSC リソースは、マネージド オブジェクト形式 を使用して、schema.mof
ファイルスキーマを定義します。
DSC リソースの構文を取得するには、Syntax パラメーターと共に Get-DSCResource コマンドレットを使用します。 これは、Syntax パラメーター Get-Command を使用してコマンドレットの構文を取得する場合と似ています。 出力には、DSC 構成の DSC リソース ブロックに使用されるテンプレートが表示されます。
Get-DscResource -Syntax Service
Service [String] #ResourceName
{
Name = [string]
[BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
[Credential = [PSCredential]]
[Dependencies = [string[]]]
[DependsOn = [string[]]]
[Description = [string]]
[DesktopInteract = [bool]]
[DisplayName = [string]]
[Ensure = [string]{ Absent | Present }]
[Path = [string]]
[PsDscRunAsCredential = [PSCredential]]
[StartupTimeout = [UInt32]]
[StartupType = [string]{ Automatic | Disabled | Manual }]
[State = [string]{ Ignore | Running | Stopped }]
[TerminateTimeout = [UInt32]]
}
コマンドレット構文と同様に、角かっこで囲まれた キーは省略可能です。 この型は、各キーで想定されるデータ型を指定します。
Spooler
サービスが実行されていることを確認するには、
$SharedDscParameters = @{
Name = 'Service'
ModuleName = 'PSDscResources'
Property = @{
Name = 'Spooler'
State = 'Running'
}
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
Invoke-DscResource -Method Set @SharedDscParameters
}
$SharedDscParameters
変数は、Test を呼び出すときに使用されるパラメーターを含むハッシュ テーブルであり、Invoke-DscResource
を使用してリソースの メソッドを設定。
Invoke-DscResource
の最初の呼び出しでは、Test メソッドを使用して、Spooler
サービスが実行されているかどうかを確認し、結果を $TestResult
変数に格納します。
次の手順は、サービスが既に目的の状態にあるかどうかによって異なります。 適用する前に常に目的の状態を確認し、必要に応じて Set メソッドのみを呼び出すのがベスト プラクティスです。 この例では、DSC リソースが目的の状態であるかどうかを示すメッセージがスクリプトによってコンソールに書き込まれます。 次に、サービスが実行されていない場合は、Set メソッドを使用して Invoke-DscResource
を呼び出して目的の状態を強制します。