このガイドでは、ターゲット ノード上の構成を操作する方法を説明します。 このガイドは、次の手順に分かれています。
構成を適用する
構成を適用したり管理したりするには、".mof" ファイルを生成する必要があります。 次のコードは、このガイド全体で使用する簡単な構成を表したものです。
Configuration Sample
{
# This will generate two .mof files, a localhost.mof, and a server02.mof
Node localhost, server02
{
File SampleFile
{
DestinationPath = 'C:\Temp\temp.txt'
Contents = 'This is a simple resource to show Configuration functionality on a Node.'
}
}
}
# The -OutputPath parameter is built into every Configuration automatically.
# The value of -OutputPath determines where the .mof file should be stored, once compiled.
Sample -OutputPath "C:\Temp\"
この構成をコンパイルすると、2 つの ".mof" ファイルが生成されます。
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11/27/2018 7:29 AM 2.13KB localhost.mof
-a---- 11/27/2018 7:29 AM 2.13KB server02.mof
構成を適用するには、Start-DSCConfiguration コマンドレットを使います。
-Path
パラメーターでは、".mof" ファイルが存在するディレクトリを指定します。
-Computername
を指定しないと、Start-DSCConfiguration
では、".mof" ファイルの名前によって指定されているコンピューター名 (<computername>.mof
) に対して、各構成の適用が試みられます。 詳細な出力を表示するには、Start-DSCConfiguration
に対して -Verbose
を指定します。
Start-DSCConfiguration -Path C:\Temp\ -Verbose
-Wait
を指定しない場合、1 つのジョブが作成されます。 作成されたジョブには、Start-DSCConfiguration
によって処理される ".mof" ファイルごとに 1 つの ChildJob があります。
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
45 Job45 Configuratio... Running True localhost,server02 Start-DSCConfiguration...
構成に長い時間がかかっていて停止したい場合は、Stop-DSCConfiguration を使ってローカル ノードでの適用を停止できます。
Stop-DSCConfiguration -Force
完了した後は、Get-Job によって返されるジョブ オブジェクトにより、ジョブの状態を確認できます。
$job = Get-Job
$job.ChildJobs
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
49 Job49 Configuratio... Completed True localhost Start-DSCConfiguration...
50 Job50 Configuratio... Completed True server02 Start-DSCConfiguration...
詳細な出力を見るには、次のコマンドを使って、各 ChildJob の詳細ストリームを表示します。 PowerShell のジョブについて詳しくは、「About Jobs (ジョブについて)」をご覧ください。
# View the verbose output of the localhost job using array indexing.
$job.ChildJobs[0].Verbose
Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,
'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
An LCM method call arrived from computer SERVER01 with user sid S-1-5-21-124525095-708259637-1543119021-1282804.
[SERVER01]: LCM: [ Start Set ]
[SERVER01]: LCM: [ Start Resource ] [[File]SampleFile]
[SERVER01]: LCM: [ Start Test ] [[File]SampleFile]
[SERVER01]: [[File]SampleFile] The destination object was found and no action is required.
[SERVER01]: LCM: [ End Test ] [[File]SampleFile] in 0.0370 seconds.
[SERVER01]: LCM: [ Skip Set ] [[File]SampleFile]
[SERVER01]: LCM: [ End Resource ] [[File]SampleFile]
[SERVER01]: LCM: [ End Set ]
[SERVER01]: LCM: [ End Set ] in 0.2400 seconds.
Operation 'Invoke CimMethod' complete.
PowerShell 5.0 以降では、Start-DSCConfiguration
に -UseExisting
パラメーターが追加されています。
-UseExisting
を指定することにより、-Path
パラメーターで指定したものではなく、既存適用されている構成を使うようコマンドレットに指示します。
Start-DSCConfiguration -UseExisting -Verbose -Wait
構成をテストする
Test-DSCConfiguration を使って、現在適用されている構成をテストできます。
Test-DSCConfiguration
では、ノードが準拠している場合は True
が返され、そうでない場合は False
が返されます。
Test-DSCConfiguration
PowerShell 5.0 で初めて追加された-Detailed
パラメーターでは、ResourcesInDesiredState および ResourcesNotInDesiredState のコレクションを含むオブジェクトが返されます
Test-DSCConfiguration -Detailed
PowerShell 5.0 以降では、適用しないで構成をテストできます。
-ReferenceConfiguration
パラメーターは、ノードのテスト対象の ".mof" ファイルのパスを受け取ります。 ノードに対して設定アクションは実行されません。 PowerShell 4.0 では、適用しないで構成をテストする回避策がありますが、ここでは説明しません。
構成の値を取得する
Get-DSCConfiguration コマンドレットでは、現在適用されている構成で構成されるリソースの現在の値が返されます。
Get-DSCConfiguration
正しく適用されている場合、サンプルの構成からの出力は次のようになります。
ConfigurationName : Sample
DependsOn :
ModuleName : PSDesiredStateConfiguration
ModuleVersion :
PsDscRunAsCredential :
ResourceId : [File]SampleFile
SourceInfo :
Attributes : {archive}
Checksum :
Contents :
CreatedDate : 11/27/2018 7:16:06 AM
Credential :
DestinationPath : C:\Temp\temp.txt
Ensure : present
Force :
MatchSource :
ModifiedDate : 11/27/2018 7:16:06 AM
Recurse :
Size : 75
SourcePath :
SubItems :
Type : file
PSComputerName :
CimClassName : MSFT_FileDirectoryConfiguration
構成の状態を取得する
PowerShell 5.0 以降の Get-DSCConfigurationStatus コマンドレットでは、ノードに適用された構成の履歴を参照できます。 PowerShell DSC では、プッシュまたはプル モードで適用された直近 {{N}} 個の構成が追跡されています。 これには、LCM によって実行された "整合性" チェックが含まれます。 既定の Get-DSCConfigurationStatus
では、最後の履歴エントリだけが表示されます。
Get-DSCConfigurationStatus
Status StartDate Type Mode RebootRequested NumberOfResources
------ --------- ---- ---- --------------- -----------------
Success 11/27/2018 7:18:40 AM Consistency PUSH False 1
すべての構成状態の履歴を表示するには、-All
パラメーターを使います。
Note
簡潔にするため出力は切り捨てられます。
Get-DSCConfigurationStatus -All
Status StartDate Type Mode RebootRequested NumberOfResources
------ --------- ---- ---- --------------- -----------------
Success 11/27/2018 7:18:40 AM Consistency PUSH False 1
Success 11/27/2018 7:16:06 AM Initial PUSH False 1
Success 11/27/2018 7:04:53 AM Initial PUSH False 1
Success 11/27/2018 7:03:45 AM Consistency PUSH False 2
Success 11/27/2018 7:03:40 AM Consistency PUSH False 2
Success 11/27/2018 6:48:40 AM Consistency PUSH False 2
Success 11/27/2018 6:33:44 AM Consistency PUSH False 2
Success 11/27/2018 6:33:40 AM Consistency PUSH False 2
Success 11/27/2018 6:18:40 AM Consistency PUSH False 2
Success 11/27/2018 6:03:44 AM Consistency PUSH False 2
構成ドキュメントを管理する
LCM では、構成ドキュメントを処理することによって、ノードの構成が管理されます。 これらの ".mof" ファイルは、C:\Windows\System32\Configuration
ディレクトリにあります。
PowerShell 5.0 以降では、Remove-DSCConfigurationDocument を使って ".mof" ファイルを削除することで、将来の整合性チェックを停止したり、適用されるときにエラーがある構成を削除したりできます。
-Stage
パラメーターで、削除する ".mof" ファイルを指定できます。
Remove-DSCConfigurationDocument -Stage Current
Note
PowerShell 4.0 ではまだ、Remove-Item を使って直接これらの ".mof" ファイルを削除することができます。
構成を発行する
PowerShell 5.0 以降では、Publish-DSCConfiguration コマンドレットが追加されています。 このコマンドレットを使うと、適用することなく、リモート コンピューターに ".mof" ファイルを発行できます。
Publish-DscConfiguration -Path '$home\WebServer' -ComputerName "ContosoWebServer" -Credential (get-credential Contoso\webadministrator)