Schreiben, Kompilieren und Anwenden einer Konfiguration
Gilt für: Windows PowerShell 4.0, Windows PowerShell 5.0
Diese Übung führt Sie von Anfang bis Ende durch das Erstellen und Anwenden einer Desired State Configuration (DSC)-Konfiguration. Anhand des folgenden Beispiels erfahren Sie, wie Sie eine einfache Konfiguration schreiben und anwenden. Mit der Konfiguration wird sichergestellt, dass eine „HelloWorld.txt“-Datei auf Ihrem lokalen Computer vorhanden ist. Wenn Sie die Datei löschen, erstellt DSC sie beim nächsten Update neu.
Eine Übersicht über DSC und die Funktionsweise finden Sie unter Desired State Configuration Overview for Developers (Desired State Configuration (DSC): Übersicht für Entwickler).
Requirements (Anforderungen)
Sie benötigen einen Computer mit PowerShell 4.0 oder höher, um dieses Beispiel auszuführen.
Schreiben der Konfiguration
Eine DSC-Konfiguration ist eine spezielle PowerShell-Funktion, die definiert, wie Sie einen oder mehrere Zielcomputer (Knoten) konfigurieren möchten.
Geben Sie Folgendes in die PowerShell ISE oder einen anderen PowerShell-Editor ein:
Configuration HelloWorld {
# Import the module that contains the File resource.
Import-DscResource -ModuleName PsDesiredStateConfiguration
# The Node statement specifies which targets to compile MOF files for, when
# this configuration is executed.
Node 'localhost' {
# The File resource can ensure the state of files, or copy them from a
# source to a destination with persistent updates.
File HelloWorld {
DestinationPath = "C:\Temp\HelloWorld.txt"
Ensure = "Present"
Contents = "Hello World from DSC!"
}
}
}
Wichtig
In komplexeren Szenarien, in denen mehrere Module importiert werden müssen, damit Sie mit vielen DSC-Ressourcen in der gleichen Konfiguration arbeiten können, geben Sie jedes Modul mit Import-DscResource
in einer separaten Zeile an. Dies lässt sich in der Quellcodeverwaltung leichter nachverfolgen und ist erforderlich, wenn Sie in Azure State Configuration mit DSC arbeiten.
Configuration HelloWorld {
# Import the module that contains the File resource.
Import-DscResource -ModuleName PsDesiredStateConfiguration
Import-DscResource -ModuleName xWebAdministration
Speichern Sie die Datei als „HelloWorld.ps1“.
Das Definieren einer Konfiguration entspricht dem Definieren einer Funktion. Der Node-Block gibt den zu konfigurierenden Zielknoten an, in diesem Fall localhost
.
Die Konfiguration ruft eine Ressource auf, die File
-Ressource. Ressourcen stellen sicher, dass sich der Zielknoten im durch die Konfiguration definierten Zustand befindet.
Kompilieren der Konfiguration
Damit eine DSC-Konfiguration auf einem Knoten angewendet werden kann, muss sie zunächst in eine MOF-Datei kompiliert werden. Durch Ausführen der Konfiguration wie eine Funktion wird vom Node
-Block eine .mof
-Datei für jeden Knoten definiert. Sie müssen das Skript HelloWorld.ps1
per dot source im aktuellen Bereich aufrufen, um die Konfiguration auszuführen. Weitere Informationen hierzu finden Sie unter about_Scripts (Informationen zu Skripts).
Das Skript HelloWorld.ps1
rufen Sie per dot source auf, indem Sie den Pfad zum Speicherort nach dem .
(Punkt gefolgt von einem Leerzeichen) eingeben. Anschließend können Sie Ihre Konfiguration ausführen, indem Sie sie wie eine Funktion aufrufen. Sie könnten auch die Konfigurationsfunktion unten im Skript aufrufen, sodass „dot-source“ nicht erforderlich ist.
. C:\Scripts\HelloWorld.ps1
HelloWorld
Die folgende Ausgabe wird generiert:
Directory: C:\Scripts\HelloWorld
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/13/2017 5:20 PM 2746 localhost.mof
Anwenden der Konfiguration
Nun, da Sie die kompilierte MOF-Dateien haben, können Sie die Konfiguration auf den Zielknoten (in diesem Fall der lokale Computer) anwenden, indem Sie das Cmdlet Start-DscConfiguration aufrufen.
Das Cmdlet Start-DscConfiguration
fordert den lokalen Konfigurations-Manager (die DSC-Engine) dazu auf, die Konfiguration anzuwenden. Der LCM übernimmt das Aufrufen der DSC-Ressourcen, um die Konfiguration anzuwenden.
Verwenden Sie den folgenden Code, um das Cmdlet Start-DSCConfiguration
auszuführen. Geben Sie für den Parameter Path den Verzeichnispfad an, unter dem localhost.mof
gespeichert ist. Das Cmdlet Start-DSCConfiguration
durchsucht das angegebene Verzeichnis auf Dateien des Typs <computername>.mof
. Das Cmdlet Start-DSCConfiguration
versucht, alle gefundenen .mof
-Dateien auf den vom Dateinamen angegeben computername
(„localhost“, „server01“, „dc-02“ usw.) anzuwenden.
Hinweis
Wenn der Parameter -Wait
nicht festgelegt wird, erstellt Start-DSCConfiguration
einen Hintergrundauftrag zum Ausführen des Vorgangs. Durch Festlegen des -Verbose
-Parameters können Sie die ausführliche Ausgabe des Vorgangs anzeigen. -Wait
und -Verbose
sind optionale Parameter.
Start-DscConfiguration -Path C:\Scripts\HelloWorld -Verbose -Wait
Testen der Konfiguration
Sobald das Cmdlet Start-DSCConfiguration
abgeschlossen ist, sollte Ihnen eine Datei HelloWorld.txt
am von Ihnen festgelegten Speicherort angezeigt werden. Sie können die Inhalte mit dem Cmdlet Get-Content überprüfen.
Sie können den aktuellen Status auch mit Test-DSCConfigurationtesten.
Die Ausgabe muss True
sein, wenn der Knoten derzeit der angewendeten Konfiguration entspricht.
Test-DSCConfiguration
True
Get-Content -Path C:\Temp\HelloWorld.txt
Hello World from DSC!
Erneutes Anwenden der Konfiguration
Sie können die Textdatei entfernen, die von Ihrer Konfiguration erstellt wurde, um die erneute Anwendung Ihrer Konfiguration anzuzeigen. Verwenden Sie dann das Cmdlet Start-DSCConfiguration
mit dem Parameter -UseExisting
. Der Parameter -UseExisting
weist Start-DSCConfiguration
an, die Datei „current.mof“ erneut anzuwenden, die die letzte erfolgreich angewendete Konfiguration darstellt.
Remove-Item -Path C:\Temp\HelloWorld.txt
Nächste Schritte
- Weiteren Informationen zu DSC-Konfigurationen erhalten Sie unter DSC-Konfigurationen.
- Welche DSC-Ressourcen verfügbar sind und wie Sie benutzerdefinierte DSC-Ressourcen erstellen erfahren Sie unter DSC-Ressourcen.
- DSC-Konfigurationen und -Ressourcen finden Sie unter PowerShell-Katalog.