適用対象: Windows PowerShell 4.0、Windows PowerShell 5.0
PowerShell の望ましい状態構成は、 Get、 Test、 および Set プロセスを中心に構築されます。 DSC リソース には、それぞれ、これらの各操作を完了するためのメソッドが含まれています。 構成では、リソースの Get、Test、および Set メソッドのパラメーターとなるキーを入力するリソースブロックを定義します。
これは、 サービス ・リソース・ブロックの構文です。 サービス リソースは、Windows サービスを構成します。
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 }]
}
Service リソースの Get、Test、および Set メソッドには、これらの値を受け入れるパラメーター ブロックがあります。
param
(
[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$Name,
[System.String]
[ValidateSet("Automatic", "Manual", "Disabled")]
$StartupType,
[System.String]
[ValidateSet("LocalSystem", "LocalService", "NetworkService")]
$BuiltInAccount,
[System.Management.Automation.PSCredential]
[ValidateNotNull()]
$Credential,
[System.String]
[ValidateSet("Running", "Stopped")]
$State="Running",
[System.String]
[ValidateNotNullOrEmpty()]
$DisplayName,
[System.String]
[ValidateNotNullOrEmpty()]
$Description,
[System.String]
[ValidateNotNullOrEmpty()]
$Path,
[System.String[]]
[ValidateNotNullOrEmpty()]
$Dependencies,
[System.String]
[ValidateSet("Present", "Absent")]
$Ensure="Present"
)
注
リソースの定義に使用される言語とメソッドによって、 Get、 Test、 および Set メソッドの定義方法が決まります。
サービス リソースには必要なキー (Name) が 1 つしかないため、サービス ブロック リソースは次のように単純にすることができます。
Configuration TestConfig
{
Import-DSCResource -Name Service
Node localhost
{
Service "MyService"
{
Name = "Spooler"
}
}
}
上記の構成をコンパイルすると、キーに指定した値が生成される .mof ファイルに格納されます。 詳細については、「 MOF 」を参照してください。
instance of MSFT_ServiceResource as $MSFT_ServiceResource1ref
{
SourceInfo = "::5::1::Service";
ModuleName = "PsDesiredStateConfiguration";
ResourceID = "[Service]MyService";
Name = "Spooler";
ModuleVersion = "1.0";
ConfigurationName = "Test";
};
適用されると、ローカル構成マネージャー (LCM) は .mof ファイルから値 "Spooler" を読み取り、Service リソースの "MyService" インスタンスの Get、Test、および Set メソッドの Name パラメーターに渡します。
取得
リソースの Get メソッドは、ターゲット ノードで構成されているリソースの状態を取得します。 この状態は ハッシュテーブルとして返されます。 ハッシュテーブルのキーは、リソースが受け入れる構成可能な値またはパラメーターになります。
Get メソッドは、Get-DSCConfiguration コマンドレットに直接マップされます。
Get-DSCConfiguration を呼び出すと、LCM は現在適用されている構成の各リソースの Get メソッドを実行します。 LCM は、 .mof ファイルに格納されているキー値を、対応する各リソースインスタンスのパラメーターとして使用します。
これは、"スプーラー" サービスを構成する サービス リソースからの出力例です。
ConfigurationName : Test
DependsOn :
ModuleName : PsDesiredStateConfiguration
ModuleVersion : 1.1
PsDscRunAsCredential :
ResourceId : [Service]Spooler
SourceInfo :
BuiltInAccount : LocalSystem
Credential :
Dependencies : {RPCSS, http}
Description : This service spools print jobs and handles interaction with the printer. If you turn off
this service, you won't be able to print or see your printers.
DisplayName : Print Spooler
Ensure :
Name : Spooler
Path : C:\WINDOWS\System32\spoolsv.exe
StartupType : Automatic
State : Running
Status :
PSComputerName :
CimClassName : MSFT_ServiceResource
出力には、 サービス ・リソースによって構成可能な現在の値プロパティーが表示されます。
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 }]
}
Test
リソースの Test メソッドは、ターゲット ノードが現在リソースの 望ましい状態に準拠しているかどうかを判断します。
Test メソッドは、ノードが準拠しているかどうかを示すためにのみ、$true または $false を返します。
Test-DSCConfiguration を呼び出すと、LCM は現在適用されている構成内の各リソースの Test メソッドを呼び出します。 LCM は、".mof" ファイルに格納されているキー値を、対応する各リソース インスタンスのパラメーターとして使用します。
個々のリソースの テスト の結果が $falseの場合、 Test-DSCConfiguration ノードが準拠していないことを示す $false が返されます。 すべてのリソースの テスト メソッドが $trueを返す場合、 Test-DSCConfiguration ノードが準拠していることを示すために $true を返します。
Test-DSCConfiguration
True
PowerShell 5.0 以降では、 Detailed パラメーターが追加されました。
詳細を指定すると、準拠リソースと非準拠リソースの結果のコレクションを含むオブジェクトが返Test-DSCConfigurationされます。
Test-DSCConfiguration -Detailed
PSComputerName ResourcesInDesiredState ResourcesNotInDesiredState InDesiredState
-------------- ----------------------- -------------------------- --------------
localhost {[Service]Spooler} True
詳細については、「 Test-DSCConfiguration」を参照してください。
オン
リソースの Set メソッドは、ノードがリソースの 望ましい状態に準拠するように強制しようとします。
Set メソッドはべき等であることを意図しているため、Set を複数回実行しても、常に同じ結果が得られる可能性があり、エラーはありません。
Start-DSCConfiguration を実行すると、LCM は現在適用されている構成の各リソースを循環します。 LCM は、現在のリソース インスタンスのキー値を ".mof" ファイルから取得し、 それらを Test メソッドのパラメーターとして使用します。
Test メソッドが $true を返す場合、Node は現在のリソースに準拠しており、Set メソッドはスキップされます。
テストが$falseを返した場合、ノードは非準拠です。 LCM は、リソース インスタンスのキー値をパラメーターとしてリソースの Set メソッドに渡し、ノードをコンプライアンスに復元します。
Verbose パラメーターと Wait パラメーターを指定すると、Start-DSCConfiguration コマンドレットの進行状況を監視できます。 この例では、ノードは既に準拠しています。
Verbose出力は、Set メソッドがスキップされたことを示します。
PS> Start-DSCConfiguration -Verbose -Wait -UseExisting
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' =
ApplyConfiguration,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer SERVER01 with user sid
S-1-5-21-124525095-708259637-1543119021-1282804.
VERBOSE: [SERVER01]: [] Starting consistency engine.
VERBOSE: [SERVER01]: [] Checking consistency for current configuration.
VERBOSE: [SERVER01]: [DSCEngine] Importing the module
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\DscResources\MSFT_ServiceResource\MSFT
_ServiceResource.psm1 in force mode.
VERBOSE: [SERVER01]: LCM: [ Start Resource ] [[Service]Spooler]
VERBOSE: [SERVER01]: LCM: [ Start Test ] [[Service]Spooler]
VERBOSE: [SERVER01]: [[Service]Spooler] Importing the module MSFT_ServiceResource in
force mode.
VERBOSE: [SERVER01]: LCM: [ End Test ] [[Service]Spooler] in 0.2540 seconds.
VERBOSE: [SERVER01]: LCM: [ Skip Set ] [[Service]Spooler]
VERBOSE: [SERVER01]: LCM: [ End Resource ] [[Service]Spooler]
VERBOSE: [SERVER01]: [] Consistency check completed.
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 1.379 seconds