DSC-Ressourcen
Überblick
DSC-Ressourcen bieten eine standardisierte Schnittstelle zum Verwalten der Einstellungen eines Systems. Eine DSC-Ressource definiert Eigenschaften, die Sie verwalten können, und enthält den PowerShell-Code, der Aufrufe von "Make it so" Invoke-DscResource
.
Eine DSC-Ressource kann etwas generisches Modell als Datei oder als spezifische IIS-Servereinstellung modellen. Gruppen verwandter DSC-Ressourcen werden in PowerShell-Modulen kombiniert. Module stellen ein tragbares, versionsiertes Paket für DSC-Ressourcen bereit und enthalten Metadaten und Dokumentationen dazu.
Jede DSC-Ressource verfügt über ein Schema, das die syntax bestimmt, die für die Verwendung der DSC-Ressource mit Invoke-DscResource
oder in einer Configurationerforderlich ist. Das Schema einer DSC-Ressource wird auf folgende Weise definiert:
-
<Resource Name>.psm1
Datei: Klassenbasierte DSC-Ressourcen definieren ihr Schema in der Klassendefinition. Syntaxelemente werden als Klasseneigenschaften bezeichnet. Weitere Informationen finden Sie unter about_Classes. -
Schema.Mof
Datei: MOF-basierte DSC-Ressourcen definieren ihr Schema in einerschema.mof
Datei mithilfe Managed Object Format.
Verwenden Sie zum Abrufen der Syntax für eine DSC-Ressource das Cmdlet Get-DSCResource mit dem Parameter Syntax. Dies ist wie die Verwendung Get-Command- mit dem Syntax Parameter zum Abrufen der Cmdlet-Syntax. Die Ausgabe zeigt die Vorlage, die für einen DSC-Ressourcenblock in einer DSC-Konfiguration verwendet wird.
Get-DscResource -Syntax Service
Service [String] #ResourceName
{
Name = [string]
[BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
[Credential = [PSCredential]]
[Dependencies = [string[]]]
[DependsOn = [string[]]]
[Description = [string]]
[DesktopInteract = [bool]]
[DisplayName = [string]]
[Ensure = [string]{ Absent | Present }]
[Path = [string]]
[PsDscRunAsCredential = [PSCredential]]
[StartupTimeout = [UInt32]]
[StartupType = [string]{ Automatic | Disabled | Manual }]
[State = [string]{ Ignore | Running | Stopped }]
[TerminateTimeout = [UInt32]]
}
Wie bei der Cmdlet-Syntax sind die Schlüssel in eckigen Klammern optional. Die Typen geben den Datentyp an, den jeder Schlüssel erwartet.
So stellen Sie sicher, dass der Spooler
Dienst ausgeführt wird:
$SharedDscParameters = @{
Name = 'Service'
ModuleName = 'PSDscResources'
Property = @{
Name = 'Spooler'
State = 'Running'
}
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
Invoke-DscResource -Method Set @SharedDscParameters
}
Die $SharedDscParameters
Variable ist eine Hashtabelle mit den Parametern, die beim Aufrufen des Test und Set Methoden der Ressource mit Invoke-DscResource
verwendet werden. Der erste Aufruf von Invoke-DscResource
verwendet die methode Test, um zu überprüfen, ob der Spooler
Dienst ausgeführt wird und das Ergebnis in der $TestResult
Variablen speichert.
Der nächste Schritt hängt davon ab, ob sich der Dienst bereits im gewünschten Zustand befindet. Es empfiehlt sich, den gewünschten Zustand immer vor dem Erzwingen zu überprüfen und bei Bedarf nur die Set-Methode aufzurufen. Im Beispiel schreibt das Skript eine Nachricht in die Konsole, ob sich die DSC-Ressource im gewünschten Zustand befindet. Wenn der Dienst nicht ausgeführt wird, wird dann Invoke-DscResource
mit der Set-Methode aufgerufen, um den gewünschten Zustand zu erzwingen.