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.
Gilt für: PowerShell 7, Azure-Computerkonfiguration
Import-DSCResource ist ein dynamisches Schlüsselwort, das nur innerhalb eines Configuration Blocks verwendet werden kann, um alle Ressourcen zu importieren, die in Ihrer DSC-Konfiguration benötigt werden. DSC-Ressourcen unter $PSHOME werden automatisch importiert, aber es empfiehlt sich, alle DSC-Ressourcen, die in Ihrer DSC-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 Ressourcen, 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 Modulen. Platzhalter werden unterstützt.
- ModuleName : Der Modulname oder die Modulspezifikation. Wenn Sie DSC-Ressourcen angeben, die aus einem Modul importiert werden sollen, versucht der Befehl, nur diese DSC-Ressourcen zu importieren. Wenn Sie nur das Modul angeben, importiert der Befehl alle DSC-Ressourcen im Modul.
- ModuleVersion : Mit diesem Parameter können Sie die Version eines Moduls angeben, das von einer Konfiguration verwendet werden soll. Standardmäßig wird die neueste verfügbare Version der DSC-Ressource importiert.
Import-DSCResource -ModuleName xActiveDirectory
Beispiel: Verwenden von Import-DSCResource in einer DSC-Konfiguration
Configuration MSDSCConfiguration {
# Search for and imports two DSC Resources from the PSDscResources module.
Import-DSCResource -ModuleName PSDscResources -Name Service, Registry
# Search for and import Resource1 from the module that defines it. If only
# the -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 Service
Import-DSCResource -Name TimeZone
# Search for and import all DSC resources inside the PSDscResources module.
# When specifying the ModuleName parameter, it is a requirement to list each
# on a new line.
Import-DSCResource -ModuleName PSDscResources
# You can specify a ModuleVersion parameter
Import-DSCResource -ModuleName ComputerManagementDsc -ModuleVersion 6.0.0.0
...
Hinweis
Das Angeben mehrerer Werte für DSC-Ressourcennamen und Modulnamen im selben Befehl wird nicht unterstützt. Es kann ein nicht deterministisches Verhalten aufweisen, welche DSC-Ressource aus welchem Modul geladen werden soll, wenn dieselbe DSC-Ressource in mehreren Modulen vorhanden ist. Der folgende Befehl gibt während der Kompilierung einen in-Fehler zurück.
Import-DSCResource -Name Service, TimeZone -ModuleName PSDscResources, xPSDesiredStateConfiguration
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 lädt die erste DSC-Ressource, die mit dem angegebenen Namen gefunden wurde. Wenn mehr als eine DSC-Ressource mit demselben Namen installiert ist, kann es sein, dass die falsche DSC-Ressource geladen wird.
Es wird empfohlen, ModuleName mit dem Parameter Name anzugeben, wie unten beschrieben.
Diese Verwendung hat folgende Vorteile:
- Die Auswirkungen auf die Leistung werden reduziert, indem der Suchbereich für die angegebene DSC-Ressource eingeschränkt wird.
- Es definiert explizit das Modul, das die DSC-Ressource bereitstellt, und stellt sicher, dass die richtige DSC-Ressource geladen wird.
Hinweis
DSC-Ressourcen können über mehrere Versionen verfügen, und Versionen können nebeneinander auf einem Computer installiert werden. Dies wird implementiert, indem mehrere Versionen eines DSC-Ressourcenmoduls vorhanden sind, die im selben Modulordner enthalten sind.
IntelliSense mit Import-DSCResource
Beim Erstellen der DSC-Konfiguration in VS Code stellt PowerShell IntelliSense für DSC-Ressourcen und DSC-Ressourceneigenschaften bereit. Ressourcendefinitionen unter dem $PSHOME Modulpfad werden automatisch geladen. Wenn Sie DSC-Ressourcen mithilfe des Import-DSCResource Schlüsselworts importieren, werden die angegebenen DSC-Ressourcendefinitionen hinzugefügt, und IntelliSense wird erweitert, um die importierten Schemas der DSC-Ressourcen einzuschließen.
Beim Kompilieren der DSC-Konfiguration verwendet PowerShell die importierten DSC-Ressourcendefinitionen, um die DSC-Ressourcenblöcke im Configuration Block zu überprüfen. Jeder DSC-Ressourcenblock wird durch die Schemadefinition der DSC-Ressource für die folgenden Regeln überprüft:
- Es werden nur Eigenschaften angegeben, die im Schema definiert sind.
- Die Datentypen für jede Eigenschaft sind korrekt.
- Schlüsseleigenschaften angegeben werden.
- Es wird keine schreibgeschützte Eigenschaft angegeben.
Betrachten Sie die folgende DSC-Konfiguration:
Configuration SchemaValidationInCorrectEnumValue {
Import-DSCResource -Name User -Module PSDscResources
User ExampleUser {
UserName = 'ExampleDscUser'
Ensure = 'Invalid'
}
}
Das Kompilieren dieser DSC-Konfiguration führt zu einem Fehler.
Write-Error: C:\code\dsc\sample.ps1:4:5
Line |
4 | User ExampleUser {
| ~~~~
| At least one of the values 'Invalid' is not supported or
| valid for property 'Ensure' on class 'User'. Please specify
| only supported values: Present, Absent.
InvalidOperation: Errors occurred while processing configuration
'SchemaValidationInCorrectEnumValue'.
IntelliSense und die Schemaüberprüfung ermöglichen es Ihnen, mehr Fehler während der Analyse- und Kompilierungszeit abzufangen und zukünftige Komplikationen zu vermeiden.
Hinweis
Jede DSC-Ressource kann über einen Namen und einen FriendlyName verfügen, die durch das Schema der DSC-Ressource definiert werden.
Unten sehen Sie die ersten beiden Zeilen von MSFT_UserResource.schema.mof.
[ClassVersion("1.0.0"), FriendlyName("User")]
class MSFT_UserResource : OMI_BaseResource
Wenn Sie diese DSC-Ressource in einem Configuration Block verwenden, können Sie oder UserangebenMSFT_UserResource.