Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0
PowerShell Desired State Configuration is opgebouwd rond een Get,Test en Set-proces . DSC-bronnen bevatten elk methoden om elk van deze bewerkingen te voltooien. In een configuratie definieert u resourceblokken om sleutels in te vullen die parameters worden voor de methoden Get, Test en Set van een resource.
Dit is de syntaxis voor een serviceresourceblok . De serviceresource configureert Windows-services.
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 }]
}
De methoden Get,Test en Set van de serviceresource bevatten parameterblokken die deze waarden accepteren.
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"
)
Opmerking
De taal en methode die worden gebruikt om de resource te definiëren, bepalen hoe de methoden Get, Test en Set worden gedefinieerd.
Omdat de serviceresource slechts één vereiste sleutel (Name) heeft, kan een serviceblokresource er zo eenvoudig uitzien als volgt:
Configuration TestConfig
{
Import-DSCResource -Name Service
Node localhost
{
Service "MyService"
{
Name = "Spooler"
}
}
}
Wanneer u de bovenstaande configuratie compileert, worden de waarden die u voor een sleutel opgeeft, opgeslagen in het .mof bestand dat wordt gegenereerd. Zie MOF voor meer informatie.
instance of MSFT_ServiceResource as $MSFT_ServiceResource1ref
{
SourceInfo = "::5::1::Service";
ModuleName = "PsDesiredStateConfiguration";
ResourceID = "[Service]MyService";
Name = "Spooler";
ModuleVersion = "1.0";
ConfigurationName = "Test";
};
Wanneer toegepast, leest de Local Configuration Manager (LCM) de waarde 'Spooler' uit het .mof bestand en geeft deze door aan de parameter Name van de methoden Get, Test en Set voor het exemplaar 'MyService' van de serviceresource .
Ontvang
Met de methode Get van een resource wordt de status van de resource opgehaald zoals deze is geconfigureerd op het doelknooppunt. Deze status wordt geretourneerd als een hashtabel. De sleutels van de hashtabel zijn de configureerbare waarden of parameters die de resource accepteert.
De Get-methode wordt rechtstreeks toegewezen aan de cmdlet Get-DSCConfiguration .
Wanneer u aanroept Get-DSCConfiguration, voert de LCM de Get-methode uit van elke resource in de momenteel toegepaste configuratie. De LCM gebruikt de sleutelwaarden die in het .mof bestand zijn opgeslagen als parameters voor elke corresponderende resource-instantie.
Dit is een voorbeeld van uitvoer van een serviceresource die de "Spooler"-service configureert.
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
In de uitvoer worden de eigenschappen van de huidige waarde weergegeven die kunnen worden geconfigureerd door de serviceresource .
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
De testmethode van een resource bepaalt of het doelknooppunt momenteel voldoet aan de gewenste status van de resource. De testmethode retourneert $true of $false alleen om aan te geven of de knoop compatibel is. Wanneer u Test-DSCConfiguration aanroept, roept de LCM de testmethode aan van elke resource in de momenteel toegepaste configuratie. De LCM gebruikt de sleutelwaarden die zijn opgeslagen in het ".mof"-bestand als parameters voor elke overeenkomstige resource-instantie.
Als het resultaat van de test van een afzonderlijke resource is $false, Test-DSCConfiguration geeft $false dit aan dat het knooppunt niet compatibel is. Als alle testmethoden van de resource terugkeren $true, geeft dit als resultaat Test-DSCConfiguration$true om aan te geven dat het knooppunt compatibel is.
Test-DSCConfiguration
True
Vanaf PowerShell 5.0 is de parameter Detailed toegevoegd.
Gedetailleerde oorzaken Test-DSCConfiguration opgeven voor het retourneren van een object met verzamelingen resultaten voor compatibele en niet-compatibele bronnen.
Test-DSCConfiguration -Detailed
PSComputerName ResourcesInDesiredState ResourcesNotInDesiredState InDesiredState
-------------- ----------------------- -------------------------- --------------
localhost {[Service]Spooler} True
Zie Test-DSCConfiguration voor meer informatie.
Set
De Set-methode van een resource probeert het knooppunt te dwingen compatibel te worden met de gewenste status van de resource. De Set-methode is bedoeld om idempotent te zijn, wat betekent dat Set meerdere keren kan worden uitgevoerd en altijd hetzelfde resultaat zonder fouten krijgt. Wanneer u Start-DSCConfiguration uitvoert, doorloopt de LCM elke resource in de momenteel toegepaste configuratie. De LCM haalt sleutelwaarden voor de huidige resource-instantie op uit het ".mof"-bestand en gebruikt deze als parameters voor de testmethode . Als de testmethode wordt geretourneerd $true, voldoet het knooppunt aan de huidige resource en wordt de methode Set overgeslagen. Als de test terugkeert $false, is de knoop niet-compatibel. Het LCM geeft de sleutelwaarden van het resource-exemplaar als parameters door aan de Set-methode van de resource, waardoor het knooppunt weer aan de norm voldoet.
Door de parameters Uitgebreid en Wachten op te geven, kunt u de voortgang van de Start-DSCConfiguration cmdlet bekijken. In dit voorbeeld is de Node al compatibel. De Verbose uitvoer geeft aan dat de Set-methode is overgeslagen.
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