Tesztkészlet lekérése

A következőkre vonatkozik: Windows PowerShell 4.0, Windows PowerShell 5.0

A PowerShell-Desired State Configuration egy Get, Test és Set folyamat köré épül fel. A DSC-erőforrások mindegyike metódusokat tartalmaz az egyes műveletek végrehajtásához. A konfigurációkban erőforrásblokkokat határoz meg, amelyek olyan kulcsokat töltenek ki, amelyek az erőforrás Get, Test és Set metódusainak paramétereivé válnak.

Ez egy szolgáltatáserőforrás-blokk szintaxisa. A Szolgáltatás erőforrás konfigurálja a Windows-szolgáltatásokat.

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 }]
}

A Szolgáltatás erőforrás Get, Test és Set metódusai olyan paraméterblokkokkal rendelkeznek, amelyek elfogadják ezeket az értékeket.

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"
)

Megjegyzés

Az erőforrás meghatározásához használt nyelv és metódus határozza meg a Get, a Test és a Set metódus definiálási módját.

Mivel a Szolgáltatás erőforrás csak egy szükséges kulccsal rendelkezik (Name), a szolgáltatásblokk típusú erőforrás a következőhöz hasonlóan egyszerű lehet:

Configuration TestConfig
{
    Import-DSCResource -Name Service
    Node localhost
    {
        Service "MyService"
        {
            Name = "Spooler"
        }
    }
}

A fenti konfiguráció lefordításakor a kulcshoz megadott értékek a .mof létrehozott fájlban lesznek tárolva. További információ: MOF.

instance of MSFT_ServiceResource as $MSFT_ServiceResource1ref
{
SourceInfo = "::5::1::Service";
 ModuleName = "PsDesiredStateConfiguration";
 ResourceID = "[Service]MyService";
 Name = "Spooler";

ModuleVersion = "1.0";

 ConfigurationName = "Test";

};

Ha alkalmazva van, a Helyi Configuration Manager (LCM) beolvassa a "Spooler" értéket a .mof fájlból, és továbbítja azt a Szolgáltatás erőforrás "MyService" példányának Lekérési, Tesztelési és Beállítási metódusok név paraméterének.

Lekérés

Az erőforrás Get metódusa lekéri az erőforrás állapotát a célcsomóponton konfigurálva. Ezt az állapotot a rendszer kivonattáblaként adja vissza. A kivonattábla kulcsai a konfigurálható értékek vagy paraméterek lesznek, amelyet az erőforrás elfogad.

A Get metódus közvetlenül a Get-DSCConfiguration parancsmagra képez le. Híváskor Get-DSCConfigurationaz LCM az egyes erőforrások Get metódusát futtatja az aktuálisan alkalmazott konfigurációban. Az LCM a fájlban .mof tárolt kulcsértékeket használja paraméterekként az egyes megfelelő erőforráspéldányokhoz.

Ez egy szolgáltatáserőforrás mintakimenete, amely konfigurálja a "Spooler" szolgáltatást.

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

A kimenet a Szolgáltatás erőforrás által konfigurálható aktuális értéktulajdonságokat jeleníti meg.

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 }]
}

Teszt

Az erőforrás tesztmetódusa határozza meg, hogy a célcsomópont jelenleg megfelel-e az erőforrás kívánt állapotának. A Teszt metódus visszaadja $true vagy $false csak azt jelzi, hogy a csomópont megfelelő-e. A Test-DSCConfiguration hívásakor az LCM meghívja az egyes erőforrások tesztelési metódusát az aktuálisan alkalmazott konfigurációban. Az LCM az ".mof" fájlban tárolt kulcsértékeket használja paraméterekként az egyes megfelelő erőforráspéldányokhoz.

Ha egy adott erőforrás tesztjének eredménye a $false, Test-DSCConfiguration$false akkor a visszaadott érték azt jelzi, hogy a csomópont nem felel meg a követelményeknek. Ha az összes erőforrás tesztelési metódusa visszaadja $truea értéket, Test-DSCConfiguration a visszaadott $true érték azt jelzi, hogy a csomópont megfelelő.

Test-DSCConfiguration
True

A PowerShell 5.0-tól kezdve a Részletes paraméter lett hozzáadva. A részletes okok Test-DSCConfiguration megadása egy olyan objektum visszaadásához, amely a megfelelő és a nem megfelelő erőforrások eredményeinek gyűjteményeit tartalmazza.

Test-DSCConfiguration -Detailed
PSComputerName  ResourcesInDesiredState        ResourcesNotInDesiredState     InDesiredState
--------------  -----------------------        --------------------------     --------------
localhost       {[Service]Spooler}                                            True

További információ: Test-DSCConfiguration.

Beállítás

Az erőforrás Set metódusa arra próbálja kényszeríteni a csomópontot, hogy megfeleljen az erőforrás kívánt állapotának. A Set metódusnak idempotensnek kell lennie, ami azt jelenti, hogy a Készlet többször is futtatható, és mindig ugyanazt az eredményt kapja hibák nélkül. A Start-DSCConfiguration futtatásakor az LCM az aktuálisan alkalmazott konfiguráció minden erőforrásán végigfut. Az LCM lekéri az aktuális erőforráspéldány kulcsértékeit a ".mof" fájlból, és paraméterekként használja őket a Test metódushoz. Ha a Teszt metódus ad vissza $true, a csomópont megfelel az aktuális erőforrásnak, és a Set metódus ki lesz hagyva. Ha a teszt ad vissza $false, a csomópont nem megfelelő. Az LCM paraméterként továbbítja az erőforráspéldány kulcsértékeit az erőforrás Set metódusának, és visszaállítja a csomópontot a megfelelőségre.

A Részletes és a Várakozás paraméterek megadásával watch a Start-DSCConfiguration parancsmag állapotát. Ebben a példában a Csomópont már megfelelő. A Verbose kimenet azt jelzi, hogy a Set metódus kimaradt.

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

Lásd még