Sdílet prostřednictvím


Get-Test-Set

Platí pro: Windows PowerShell 4.0, Windows PowerShell 5.0

Desired State Configuration PowerShellu je vytvořený kolem procesů Get, Test a Set. Každý z prostředků DSC obsahuje metody pro dokončení každé z těchto operací. V konfiguraci definujete bloky prostředků, které vyplní klíče, které se stanou parametry pro metody Get, Test a Set prostředku.

Toto je syntaxe bloku prostředků služby . Prostředek služby konfiguruje služby Systému Windows.

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

Metody Get, Test a Set prostředku služby budou obsahovat bloky parametrů, které tyto hodnoty přijímají.

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

Poznámka

Jazyk a metoda použitá k definování prostředku určuje, jak budou definovány metody Get, Test a Set .

Vzhledem k tomu, že prostředek služby má pouze jeden požadovaný klíč (Name), prostředek bloku služby může být stejně jednoduchý jako tento:

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

Při kompilaci výše uvedené konfigurace se hodnoty zadané pro klíč uloží do .mof vygenerovaného souboru. Další informace najdete v tématu MOF.

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

ModuleVersion = "1.0";

 ConfigurationName = "Test";

};

Když se použije, místní Configuration Manager (LCM) přečte ze souboru hodnotu "Služba zařazování" .mof a předá ji do parametru Name metod Get, Test a Set pro instanci MyService prostředku služby.

Get

Metoda Get prostředku načte stav prostředku tak, jak je nakonfigurovaný na cílovém uzlu. Tento stav se vrátí jako zatřiďovací tabulka. Klíči hashtable budou konfigurovatelné hodnoty neboli parametry, které prostředek přijímá.

Metoda Get se mapuje přímo na rutinu Get-DSCConfiguration . Když zavoláte Get-DSCConfiguration, LCM spustí metodu Get pro každý prostředek v aktuálně použité konfiguraci. LCM používá hodnoty klíčů uložené v .mof souboru jako parametry pro každou odpovídající instanci prostředku.

Toto je ukázkový výstup z prostředku služby , který konfiguruje službu zařazování.

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

Výstup zobrazuje vlastnosti aktuální hodnoty konfigurovatelné prostředkem služby .

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

Test

Metoda Test prostředku určuje, jestli cílový uzel aktuálně vyhovuje požadovanému stavu prostředku. Metoda Test vrátí $true nebo $false pouze k označení, zda uzel vyhovuje předpisům. Při volání Test-DSCConfiguration volá LCM metodu Test každého prostředku v aktuálně použité konfiguraci. LCM používá hodnoty klíčů uložené v souboru ".mof" jako parametry pro každou odpovídající instanci prostředku.

Pokud je $falsevýsledek testu libovolného jednotlivého prostředku , Test-DSCConfiguration vrátí hodnotu $false označující, že uzel není kompatibilní. Pokud všechny metody Test prostředku vrátí $truehodnotu , Test-DSCConfiguration vrátí hodnotu $true označující, že uzel vyhovuje předpisům.

Test-DSCConfiguration
True

Od PowerShellu 5.0 se přidal parametr Detailed . Určení podrobných příčin Test-DSCConfiguration pro vrácení objektu obsahujícího kolekce výsledků pro vyhovující a nevyhovující prostředky.

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

Další informace najdete v tématu Test-DSCConfiguration.

Set

Metoda Set prostředku se pokusí vynutit, aby uzel odpovídal požadovanému stavu prostředku. Metoda Set je určena jako idempotentní, což znamená, že set lze spustit vícekrát a vždy získat stejný výsledek bez chyb. Když spustíte Start-DSCConfiguration, LCM prochází každý prostředek v aktuálně použité konfiguraci. LCM načte hodnoty klíče pro aktuální instanci prostředku ze souboru ".mof" a použije je jako parametry pro metodu Test . Pokud metoda Test vrátí $true, uzel je kompatibilní s aktuálním prostředkem a metoda Set se přeskočí. Pokud test vrátí $false, uzel nedodržuje předpisy. LCM předá klíčové hodnoty instance prostředku jako parametry do metody Set prostředku a obnoví node do dodržování předpisů.

Zadáním parametrů Verbose a Wait můžete watch průběh rutinyStart-DSCConfiguration. V tomto příkladu je uzel již kompatibilní. Výstup Verbose označuje, že metoda Set byla vynechána.

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

Viz také