Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Import-DSCResource ist ein dynamisches Schlüsselwort, das nur innerhalb eines Konfigurationsskriptblocks verwendet werden kann, um alle in Ihrer Konfiguration benötigten Ressourcen zu importieren. Ressourcen unter $PSHOME werden automatisch importiert, aber es wird immer noch als bewährte Methode angesehen, alle Ressourcen, die in Ihrer Konfiguration verwendet werden, explizit zu importieren.
Die Syntax für Import-DSCResource ist unten dargestellt. Wenn Sie Module nach Namen angeben, ist es erforderlich, jedes Modul in einer neuen Zeile aufzulisten.
Import-DscResource [-Name <ResourceName(s)>] [-ModuleName <ModuleName>] [-ModuleVersion <ModuleVersion>]
Die Parameter
-
-Name- Die DSC-Ressourcennamen, die Sie importieren müssen. Wenn der Modulname angegeben ist, sucht der Befehl nach diesen DSC-Ressourcen in diesem Modul. Andernfalls durchsucht der Befehl die DSC-Ressourcen in allen DSC-Ressourcenpfaden. Platzhalter werden unterstützt. -
-ModuleName- Der Modulname oder die Modulspezifikation. Wenn Sie Ressourcen angeben, die aus einem Modul importiert werden sollen, versucht der Befehl, nur diese Ressourcen zu importieren. Wenn Sie nur das Modul angeben, importiert der Befehl alle DSC-Ressourcen im Modul. -
-ModuleVersion- Ab PowerShell 5.0 können Sie angeben, welche Version eines Moduls eine Konfiguration verwenden soll. Weitere Informationen finden Sie unter Importieren einer bestimmten Version einer installierten Ressource.
Import-DscResource -ModuleName xActiveDirectory
Beispiel: Verwenden von Import-DSCResource innerhalb einer Konfiguration
Configuration MSDSCConfiguration
{
# Search for and imports Service, File, and Registry from the module PSDesiredStateConfiguration.
Import-DSCResource -ModuleName PSDesiredStateConfiguration -Name Service, File, Registry
# Search for and import Resource1 from the module that defines it.
# If only –Name parameter is used then resources can belong to different PowerShell modules as well.
# TimeZone resource is from the ComputerManagementDSC module which is not installed by default.
# As a best practice, list each requirement on a different line if possible. This makes reviewing
# multiple changes in source control a bit easier.
Import-DSCResource -Name File
Import-DSCResource -Name TimeZone
# Search for and import all DSC resources inside the module PSDesiredStateConfiguration.
# When specifying the modulename parameter, it is a requirement to list each on a new line.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
# In PowerShell 5.0 and later, you can specify a ModuleVersion parameter
Import-DSCResource -ModuleName ComputerManagementDsc -ModuleVersion 6.0.0.0
...
Hinweis
Das Angeben mehrerer Werte für Ressourcennamen und Modulnamen im selben Befehl wird nicht unterstützt. Es kann ein nicht deterministisches Verhalten aufweisen, welche Ressource von welchem Modul geladen werden soll, falls dieselbe Ressource in mehreren Modulen vorhanden ist. Der folgende Befehl führt zu einem Fehler während der Kompilierung.
Import-DscResource -Name UserConfigProvider*,TestLogger1 -ModuleName UserConfigProv,PsModuleForTestLogger
Dinge, die Sie beachten sollten, wenn Sie nur den Parameter Name verwenden:
- Es handelt sich um einen ressourcenintensiven Vorgang, der von der Anzahl der auf dem Computer installierten Module abhängt.
- Es wird die erste gefundene Ressource mit dem angegebenen Namen geladen. Wenn mehr als eine Ressource mit demselben Namen installiert ist, kann die falsche Ressource geladen werden.
Die empfohlene Verwendung besteht darin, mit dem -Name Parameter anzugeben–ModuleName, wie unten beschrieben.
Diese Verwendung hat folgende Vorteile:
- Die Auswirkungen auf die Leistung werden reduziert, indem der Suchbereich für die angegebene Ressource eingeschränkt wird.
- Es definiert explizit das Modul, das die Ressource definiert, und stellt sicher, dass die richtige Ressource geladen wird.
Hinweis
In PowerShell 5.0 können DSC-Ressourcen über mehrere Versionen verfügen, und Versionen können nebeneinander auf einem Computer installiert werden. Dies wird implementiert, indem mehrere Versionen eines Ressourcenmoduls vorhanden sind, die im selben Modulordner enthalten sind. Weitere Informationen finden Sie unter Verwenden von Ressourcen mit mehreren Versionen.
Intellisense mit Import-DSCResource
Beim Erstellen der DSC-Konfiguration in der ISE stellt PowerShell IntelliSense für Ressourcen und Ressourceneigenschaften bereit. Ressourcendefinitionen unter dem $pshome Modulpfad werden automatisch geladen.
Wenn Sie Ressourcen mithilfe des Schlüsselworts Import-DSCResource importieren, werden die angegebenen Ressourcendefinitionen hinzugefügt, und IntelliSense wird erweitert, um das Schema der importierten Ressource einzuschließen.
Hinweis
Ab PowerShell 5.0 wurde der ISE für DSC-Ressourcen und deren Eigenschaften die Tab-Vervollständigung hinzugefügt. Weitere Informationen finden Sie unter Ressourcen.
Beim Kompilieren der Konfiguration verwendet PowerShell die importierten Ressourcendefinitionen, um alle Ressourcenblöcke in der Konfiguration zu überprüfen. Jeder Ressourcenblock wird anhand der Schemadefinition der Ressource für die folgenden Regeln validiert.
- Es werden nur Eigenschaften verwendet, die im Schema definiert sind.
- Die Datentypen für jede Eigenschaft sind korrekt.
- Schlüsseleigenschaften angegeben werden.
- Es wird keine schreibgeschützte Eigenschaft verwendet.
- Validierung von Wertezuordnungstypen.
Betrachten Sie die folgende Konfiguration:
Configuration SchemaValidationInCorrectEnumValue
{
# It is best practice to explicitly import all resources used in your Configuration.
# This includes resources that are imported automatically, like WindowsFeature.
Import-DSCResource -Name WindowsFeature
Node localhost
{
WindowsFeature ROLE1
{
Name = "Telnet-Client"
Ensure = "Invalid"
}
}
}
Das Kompilieren dieser Konfiguration führt zu einem Fehler.
PSDesiredStateConfiguration\WindowsFeature: At least one of the values 'Invalid' is not supported or
valid for property 'Ensure' on class 'WindowsFeature'. Please specify only supported values:
Present, Absent.
IntelliSense und die Schemaüberprüfung ermöglichen es Ihnen, mehr Fehler während der Analyse- und Kompilierungszeit abzufangen und Komplikationen zur Laufzeit zu vermeiden.
Hinweis
Jede DSC-Ressource kann über einen Namen und einen FriendlyName verfügen, die durch das Schema der Ressource definiert werden. Unten sind die ersten beiden Zeilen von "MSFT_ServiceResource.shema.mof".
[ClassVersion("1.0.0"),FriendlyName("Service")]
class MSFT_ServiceResource : OMI_BaseResource
Wenn Sie diese Ressource in einer Konfiguration verwenden, können Sie MSFT_ServiceResource oder Service angeben.
Unterschiede zwischen PowerShell v4 und v5
Es gibt mehrere Unterschiede, die beim Erstellen von Konfigurationen in PowerShell 4.0 und PowerShell 5.0 und höher auftreten. In diesem Abschnitt werden die Unterschiede hervorgehoben, die für diesen Artikel relevant sind.
Mehrere Ressourcenversionen
Das gleichzeitige Installieren und Verwenden mehrerer Versionen von Ressourcen wurde in PowerShell 4.0 nicht unterstützt. Wenn Sie Probleme beim Importieren von Ressourcen in Ihre Konfiguration feststellen, stellen Sie sicher, dass Sie nur eine Version der Ressource installiert haben.
In der folgenden Abbildung sind zwei Versionen des xPSDesiredStateConfiguration-Moduls installiert.
Kopieren Sie den Inhalt der gewünschten Modulversion in die oberste Ebene des Modulverzeichnisses.
Ressourcenspeicherort
Beim Erstellen und Kompilieren von Konfigurationen können Ihre Ressourcen in einem beliebigen Verzeichnis gespeichert werden, das von Ihrem PSModulePath angegeben wird.
In PowerShell 4.0 erfordert das LCM, dass alle DSC-Ressourcenmodule unter "Programme\WindowsPowerShell\Modules" oder $pshome\Modulesgespeichert werden. Ab PowerShell 5.0 wurde diese Anforderung entfernt, und Ressourcenmodule können in einem beliebigen Verzeichnis gespeichert werden, das von angegeben wird PSModulePath.
ModuleVersion hinzugefügt
Ab PowerShell 5.0 können Sie mit dem -ModuleVersion Parameter angeben, welche Version eines Moduls in Ihrer Konfiguration verwendet werden soll.