A konfiguráció visszavonása, paraméteres konfigurációk

Előfordulhat, hogy egy alkalmazott konfigurációt később vissza akarunk vonni. Önmagában az nem elég, hogy a MOF fájlt eltávolítjuk, mert ettől még a változtatások ottmaradnak a gépen, hanem ellentétes értelmű konfigurációt kell alkalmazni. Ehhez az összes erőforrás

            Ensure = 'Present'

részt módosítani kellene

            Ensure = 'Absent'

-re.

Ez elég nehézkes művelet, főleg ha sok erőforrásunk van a konfigurációban, így érdemes lehet paramétert alkalmazni erre, így sokkal könnyebb változtatni a paraméter segítségével a konfiguráción. Ebben a verzióban szeretnénk még megszabadulni attól a figyelmeztetéstől, amit a 3.3.3 A konfiguráció futtatása, a MOF fájl tartalma fejezetben láttunk:

WARNING: The configuration 'FajlRegLegyenOtt' is loading one or more built-in

resources without explicitly importing associated modules. Add

Import-DscResource -ModuleName 'PSDesiredStateConfiguration' to your

configuration to avoid this message.

Ez a figyelmeztetés arról szól, hogy ugyan most már PowerShell 3.0 óta van u.n. module autoload, azaz a standard helyeken található modulokat PowerShell megtalálja, de azért jobb a békesség, inkább explicit importáljuk az erőforrás-definiciókat tartalmazó modulokat.

Mindezzel kiegészítve a konfigurációnk így néz ki:

configuration FajlRegLegyenOtt {

param(

    [switch] $rollback

)

    Import-DscResource –ModuleName ’PSDesiredStateConfiguration’

    if($rollback){

        $ensure = 'Absent'

    }

    else{

        $ensure = 'Present'

    }

    Node localhost {

        File Fájl {

            Ensure = $ensure

            Type = 'File'

            SourcePath = 'C:\PowerShell\Default.txt'

            DestinationPath = 'c:\FolderByDSC\Default.txt'

            MatchSource = $true

        }

 

        Registry Reg {

            Key = "HKLM:\SOFTWARE\SoosTibor"

            ValueName = "AzEnErtekem"

            Ensure = $ensure

            ValueData = "DSC-vel létrehozva"

            ValueType = "String"

        }

    }

}

 Látható, hogy a függvényekhez teljesen hasonló módon paramétereket lehet definiálni a konfigurációkban, amelyek értékeit felhasználhatjuk az erőforrások tulajdonságainak beállításánál. A példámban a -rollback kapcsoló értékétől függően egy $ensure változó értékét állítom be vagy ’Present’-re vagy ’Absent’-re és ezt a $ensure változót használom az erőforrás Ensure tulajdonságának beállítására.

Természetesen ilyenkor a konfiguráció futtatásakor is használhatom ezt a -rollback paramétert:

PS C:\> FajlRegLegyenOtt -OutputPath C:\PowerShell -rollback

 

 

    Directory: C:\PowerShell

 

 

Mode                LastWriteTime         Length Name

----                -------------         ------ ----

-a----      2015.10.31.     18:44           2912 localhost.mof

Ha pedig ezzel a paraméterrel hajtom végre a konfigurációt látható, hogy a korábban létrehozott fájl és registry bejegyzés törlődött:

PS C:\> Start-DscConfiguration -Path C:\PowerShell -Wait -Verbose

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]Fájl]

VERBOSE: [STLENO]: LCM:  [ Start  Test     ]  [[File]Fájl]

VERBOSE: [STLENO]: LCM:  [ End    Test     ]  [[File]Fájl]  in 0.0070 seconds.

VERBOSE: [STLENO]: LCM:  [ Start  Set      ]  [[File]Fájl]

VERBOSE: [STLENO]:                            [[File]Fájl]

c:\FolderByDSC\Default.txt was successfully deleted.

VERBOSE: [STLENO]: LCM:  [ End    Set      ]  [[File]Fájl]  in 0.0020 seconds.

VERBOSE: [STLENO]: LCM:  [ End    Resource ]  [[File]Fájl]

VERBOSE: [STLENO]: LCM:  [ Start  Resource ]  [[Registry]Reg]

VERBOSE: [STLENO]: LCM:  [ Start  Test     ]  [[Registry]Reg]

VERBOSE: [STLENO]:                            [[Registry]Reg] Found registry

key value 'HKLM:\SOFTWARE\SoosTibor\AzEnErtekem' with type 'String' and data

'DSC-vel létrehozva'

VERBOSE: [STLENO]: LCM:  [ End    Test     ]  [[Registry]Reg]  in 0.2450

seconds.

VERBOSE: [STLENO]: LCM:  [ Start  Set      ]  [[Registry]Reg]

VERBOSE: [STLENO]:                            [[Registry]Reg] (REMOVAL)

Registry key value 'HKLM:\SOFTWARE\SoosTibor\AzEnErtekem' removed

VERBOSE: [STLENO]: LCM:  [ End    Set      ]  [[Registry]Reg]  in 0.0700

seconds.

VERBOSE: [STLENO]: LCM:  [ End    Resource ]  [[Registry]Reg]

VERBOSE: [STLENO]: LCM:  [ End    Set      ]

VERBOSE: [STLENO]: LCM:  [ End    Set      ]    in  0.7540 seconds.

VERBOSE: Operation 'Invoke CimMethod' complete.

VERBOSE: Time taken for configuration job to complete is 0.834 seconds

Ezzel tehát nagyon egyszerűen lehet ki és bekapcsolni a konfigurációkat. De vajon teljes volt a takarítás?

PS C:\> dir c:\folder*

 

 

    Directory: C:\

 

 

Mode                LastWriteTime         Length Name

----                -------------         ------ ----

d-----      2015.10.31.     18:44                FolderByDSC

 

PS C:\> dir C:\FolderByDSC\

PS C:\>

PS C:\> dir HKLM:\SOFTWARE\SoosTibo*

 

 

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

 

 

Name                           Property

----                           --------

SoosTibor

Látható, hogy a fájl és a registry érték nincs ott, de maga a mappa és a registry kulcs ottmaradt, azaz nem tökéletes a takarítás. Ha ez nekünk nem jó, akkor például kettébonthatjuk mindkét erőforrást, hogy legyen része a konfigurációnak explicit módon a könyvtár és a registry kulcs létrehozása, majd egy újabb elemként hozzuk benne létre a fájlt, illetve a registry értéket.



Word To HTML Converter