Freigeben über


DSC-Ressourcen

Übersicht

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 aufruft, Invoke-DscResource "es so zu machen".

Eine DSC-Ressource kann etwas so generisches wie eine Datei oder so spezifisch wie eine IIS-Servereinstellung modellieren. Gruppen verwandter DSC-Ressourcen werden in PowerShell-Modulen zusammengefasst. Module bieten ein portables, versioniertes Paket für DSC-Ressourcen und enthalten Metadaten und Dokumentation zu diesen Ressourcen.

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 Konfiguration erforderlich ist. Das Schema einer DSC-Ressource wird wie folgt definiert:

  • <Resource Name>.psm1 file: Klassenbasierte DSC-Ressourcen definieren ihr Schema in der Klassendefinition. Syntaxelemente werden als Klasseneigenschaften bezeichnet. Weitere Informationen finden Sie unter about_Classes.
  • Schema.Mof file: MOF-basierte DSC-Ressourcen definieren ihr Schema in einer Datei mithilfe des schema.mofVerwalteten Objektformats.

Verwenden Sie zum Abrufen der Syntax für eine DSC-Ressource das Cmdlet Get-DSCResource mit dem Syntax-Parameter . Dies ähnelt der Verwendung von Get-Command mit dem Syntax-Parameter zum Abrufen der Cmdletsyntax. 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 die Cmdletsyntax 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, die die Parameter enthält, die beim Aufrufen der Test - und Set-Methoden der Ressource mit Invoke-DscResourceverwendet werden. Der erste Aufruf von Invoke-DscResource verwendet die Test-Methode , um zu überprüfen, ob der Spooler Dienst ausgeführt wird, und speichert das Ergebnis in der $TestResult Variablen.

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 die Set-Methode nur bei Bedarf aufzurufen. Im Beispiel schreibt das Skript eine Nachricht an die Konsole, ob sich die DSC-Ressource im gewünschten Zustand befindet. Wenn der Dienst dann nicht ausgeführt wird, ruft Invoke-DscResource er mit der Set-Methode auf, um den gewünschten Zustand zu erzwingen.