Tehát egészítsük ki a konfigurációnkat két újabb erőforrással, ahol a konténereket hozzuk létre a fájl és a registry érték számára:
configuration FajlRegLegyenOtt {
param(
[switch] $rollback
)
Import-DscResource –ModuleName ’PSDesiredStateConfiguration’
if($rollback){
$ensure = 'Absent'
}
else{
$ensure = 'Present'
}
Node localhost {
File Konyvtar {
Type = 'Directory'
DestinationPath = 'C:\FolderByDSC'
Ensure = $ensure
Force = $true
}
File Fájl {
DependsOn = '[File]Konyvtar'
Ensure = $ensure
Type = 'File'
SourcePath = 'C:\PowerShell\Default.txt'
DestinationPath = 'c:\FolderByDSC\Default.txt'
MatchSource = $true
}
Registry Reg {
DependsOn = '[Registry]RegKey'
Key = "HKLM:\SOFTWARE\SoosTibor"
ValueName = "AzEnErtekem"
Ensure = $ensure
ValueData = "DSC-vel létrehozva"
ValueType = "String"
}
Registry RegKey {
Key = "HKLM:\SOFTWARE\SoosTibor"
ValueName = ""
Ensure = $ensure
}
}
}
Beraktam tehát egy újabb File erőforrást Konyvtar néven, és egy Registry erőforrást RegKey néven. A korábban létrehozott erőforrásokban pedig beraktam egy újabb tulajdonságot DependsOn néven, amiben hivatkozom a konténert létrehozó megfelelő új erőforrásra. Látható, hogy az erőforrások sorrendje tetszőleges lehet a konfiguráción belül, a lényeges a DependsOn paraméterrel ábrázolt függőségi viszonyok.
Ha ezek után futtatom és végrehajtom a konfigurációt, majd visszavonom, akkor már tényleg minden kitakarítódik:
PS C:\> Start-DscConfiguration -Wait -Force -Verbose -Path C:\PowerShell
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters,
''methodName' = SendConfigurationApply,'className' =
MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer STLENO with user sid
S-1-5-21-2156952311-2926033462-1066486086-1000.
VERBOSE: [STLENO]: LCM: [ Start Set ]
VERBOSE: [STLENO]: LCM: [ Start Resource ] [[File]Konyvtar]
VERBOSE: [STLENO]: LCM: [ Start Test ] [[File]Konyvtar]
VERBOSE: [STLENO]: LCM: [ End Test ] [[File]Konyvtar] in 0.0010
seconds.
VERBOSE: [STLENO]: LCM: [ Start Set ] [[File]Konyvtar]
VERBOSE: [STLENO]: [[File]Konyvtar] C:\FolderByDSC
was successfully deleted.
VERBOSE: [STLENO]: LCM: [ End Set ] [[File]Konyvtar] in 0.0020
seconds.
VERBOSE: [STLENO]: LCM: [ End Resource ] [[File]Konyvtar]
VERBOSE: [STLENO]: LCM: [ Start Resource ] [[File]Fájl]
VERBOSE: [STLENO]: LCM: [ Start Test ] [[File]Fájl]
VERBOSE: [STLENO]: [[File]Fájl] The system cannot
find the path specified.
VERBOSE: [STLENO]: [[File]Fájl] The related
file/directory is: c:\FolderByDSC\Default.txt.
VERBOSE: [STLENO]: [[File]Fájl] The destination
object was not found and no action is required.
VERBOSE: [STLENO]: LCM: [ End Test ] [[File]Fájl] in 0.0020 seconds.
VERBOSE: [STLENO]: LCM: [ Skip Set ] [[File]Fájl]
VERBOSE: [STLENO]: LCM: [ End Resource ] [[File]Fájl]
VERBOSE: [STLENO]: LCM: [ Start Resource ] [[Registry]RegKey]
VERBOSE: [STLENO]: LCM: [ Start Test ] [[Registry]RegKey]
VERBOSE: [STLENO]: [[Registry]RegKey] Registry key
'HKLM:\SOFTWARE\SoosTibor' exists
VERBOSE: [STLENO]: LCM: [ End Test ] [[Registry]RegKey] in 0.0280
seconds.
VERBOSE: [STLENO]: LCM: [ Start Set ] [[Registry]RegKey]
VERBOSE: [STLENO]: [[Registry]RegKey] (REMOVAL)
Registry key 'HKLM:\SOFTWARE\SoosTibor' removed
VERBOSE: [STLENO]: LCM: [ End Set ] [[Registry]RegKey] in 0.0420
seconds.
VERBOSE: [STLENO]: LCM: [ End Resource ] [[Registry]RegKey]
VERBOSE: [STLENO]: LCM: [ Start Resource ] [[Registry]Reg]
VERBOSE: [STLENO]: LCM: [ Start Test ] [[Registry]Reg]
VERBOSE: [STLENO]: [[Registry]Reg] Registry key
'HKLM:\SOFTWARE\SoosTibor' does not exist
VERBOSE: [STLENO]: LCM: [ End Test ] [[Registry]Reg] in 0.0340
seconds.
VERBOSE: [STLENO]: LCM: [ Skip Set ] [[Registry]Reg]
VERBOSE: [STLENO]: LCM: [ End Resource ] [[Registry]Reg]
VERBOSE: [STLENO]: LCM: [ End Set ]
VERBOSE: [STLENO]: LCM: [ End Set ] in 0.2200 seconds.
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 0.271 seconds
Igaz, ilyenkor a sorrend nem cserélődik meg, azaz ugyanúgy előbb a könyvtár és a registry kulcs törlődik, majd a fájl és registry érték törlésére már nincs is szükség, mert azok is eltűntek a konténereik kitörlésével. (Ezért kellett a könyvtár erőforrásnál a Force = $true, mert a könyvtár törlése alaphelyzetben csak üres könyvtárra működik.)