Node-ok megadása, paraméteres konfigurációk

Egy konfiguráción belül ugyanazt a Node nevet többszöt is használhatjuk, ilyenkor az adott gépre vonatkozó eredő MOF fájlban minden, az adott gépre vonatkozó erőforrás szerepelni fog. Az alábbi példát nézve:

configuration FajlRegLegyenOtt {

    Node ("localhost", "valami") {

        Registry Reg {

            Key = "HKLM:\SOFTWARE\SoosTibor"

            ValueName = "AzEnErtekem"

            Ensure = 'Present'

            ValueData = "DSC-vel létrehozva"

            ValueType = "String"

        }

    }

    Node localhost {

        File Fájl {

            Ensure = 'Present'

            Type = 'File'

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

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

            MatchSource = $true

        }

    }

}

 A localhost.mof-ban a Reg és a Fájl erőforrás is szerepel, míg a valami.mof-ban csak a Reg.

Viszont ne próbáljuk meg átverni a DSC-t olyan trükkökkel, hogy ugyanarra a géppel több néven hivatkozunk:

configuration FajlRegLegyenOtt {

    Node stleno {

        Registry Reg {

            Key = "HKLM:\SOFTWARE\SoosTibor"

            ValueName = "AzEnErtekem"

            Ensure = 'Present'

            ValueData = "DSC-vel létrehozva"

            ValueType = "String"

        }

    }

    Node localhost {

        File Fájl {

            Ensure = 'Present'

            Type = 'File'

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

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

            MatchSource = $true

        }

    }

} 

A fenti konfigurációban egyszer a gép „igazi” nevével (STLENO), egyszer meg az általános localhost-tal hivatkoztam. Ha legenerálom a MOF fájlokat, majd végrehajtatom a konfigurációt, a következő kimenetet és hibajelzést kapom (az elejét kicsit megkurtítottam):

PS C:\WINDOWS\system32> Start-DscConfiguration -Path C:\PowerShell\MOF\ -Wait -

Verbose -Force

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

VERBOSE: An LCM method call arrived from computer STLENO with user sid

S-1-5-21-2156952311-2926033462-1066486086-1000.

The current configuration was cancelled.

    + CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManage

   r:String) [], CimException

    + FullyQualifiedErrorId : MI RESULT 1

    + PSComputerName        : stleno

 

VERBOSE: Operation 'Invoke CimMethod' complete.

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

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

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

VERBOSE: [STLENO]:                            [[File]Fájl] Building file list

without using cache.

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

object was found and no action is required.

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

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

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

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

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

VERBOSE: Operation 'Invoke CimMethod' complete.

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

Azaz a két MOF párhuzamosan hajtódik végre, de a később elindított leállítja az első futtatását, azaz végeredményben csak az egyik hajtodótt végre, az én példámban csak a Fájl erőforrás.

Korábban említettem, hogy a konfigurációk nagyon hasonlítanak a függvényekhez. Olyannyira, hogy változókat is definiálhatunk bennük, amelyek a MOF generálásakor behelyettesítődnek és így dinamikosan a MOF fájl(ok) sokkal rugalmasabban hozhatók létre. Például, ha nem szeretném fixen „bedrótozni” a gépneveket, akkor ezeket paraméterként is átadhatom:

configuration RegLegyenOtt {

param(

    [string[]] $computer

)

    Node $computer {

        Registry Reg {

            Key = "HKLM:\SOFTWARE\SoosTibor"

            ValueName = "AzEnErtekem"

            Ensure = 'Present'

            ValueData = "DSC-vel létrehozva: $computer"

            ValueType = "String"

        }

    }

}

Ezt futtatva a paraméterértékeknek megfelelő MOF fájlok jöttek létre:

PS C:\> RegLegyenOtt -computer STLENO, ketto, harom -OutputPath C:\PowerShell\M

OF

WARNING: The configuration 'RegLegyenOtt' 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.

 

 

    Directory: C:\PowerShell\MOF

 

 

Mode                LastWriteTime         Length Name

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

-a----      2015.12.05.     17:57           2080 STLENO.mof

-a----      2015.12.05.     17:57           2078 ketto.mof

-a----      2015.12.05.     17:57           2078 harom.mof



Word To HTML Converter