Utilisation d’Import-DSCResource
S’applique à : PowerShell 7, fonctionnalité de configuration de machine d’Azure Automanage
Import-DSCResource
est une mot clé dynamique, qui ne peut être utilisée qu’à l’intérieur d’un Configuration
bloc pour importer toutes les ressources nécessaires dans votre configuration DSC. Les ressources DSC sous $PSHOME
sont importées automatiquement, mais il est recommandé d’importer explicitement toutes les ressources DSC utilisées dans votre configuration DSC.
La syntaxe pour Import-DSCResource
est indiquée ci-dessous. Lorsque vous spécifiez des modules par nom, il est nécessaire de les répertorier sur une nouvelle ligne.
Import-DscResource [-Name <ResourceName(s)>]
[-ModuleName <ModuleName>]
[-ModuleVersion <ModuleVersion>]
Paramètres
- Nom : ressources que vous devez importer. Si le nom du module est spécifié, la commande recherche ces ressources DSC dans ce module ; sinon, la commande recherche les ressources DSC dans tous les modules. Les caractères génériques sont pris en charge.
- ModuleName : nom du module ou spécification du module. Si vous spécifiez des ressources DSC à importer à partir d’un module, la commande tente d’importer uniquement ces ressources DSC. Si vous spécifiez le module uniquement, la commande importe toutes les ressources DSC du module.
- ModuleVersion : vous pouvez spécifier la version d’un module qu’une configuration doit utiliser avec ce paramètre. Par défaut, la dernière version disponible de la ressource DSC est importée.
Import-DSCResource -ModuleName xActiveDirectory
Exemple : Utiliser Import-DSCResource dans une configuration DSC
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
...
Notes
La spécification de plusieurs valeurs pour les noms de ressources DSC et les noms de modules dans la même commande n’est pas prise en charge. Il peut avoir un comportement non déterministe concernant la ressource DSC à charger à partir de quel module si la même ressource DSC existe dans plusieurs modules. La commande ci-dessous retourne une erreur pendant la compilation.
Import-DSCResource -Name Service, TimeZone -ModuleName PSDscResources, xPSDesiredStateConfiguration
Éléments à prendre en compte lorsque vous utilisez uniquement le paramètre Name :
- Il s’agit d’une opération nécessitant beaucoup de ressources en fonction du nombre de modules installés sur l’ordinateur.
- Il charge la première ressource DSC trouvée avec le nom donné. Si plusieurs ressources DSC portant le même nom sont installées, il peut charger la ressource DSC incorrecte.
L’utilisation recommandée consiste à spécifier ModuleName avec le paramètre Name , comme décrit ci-dessous.
Cette méthode offre les avantages suivants :
- Il réduit l’impact sur les performances en limitant l’étendue de recherche pour la ressource DSC spécifiée.
- Il définit explicitement le module fournissant la ressource DSC, garantissant que la ressource DSC correcte est chargée.
Notes
Les ressources DSC peuvent avoir plusieurs versions et les versions peuvent être installées sur un ordinateur côte à côte. Pour cela, plusieurs versions d’un module de ressource DSC sont contenues dans le même dossier de module.
IntelliSense avec Import-DSCResource
Lors de la création de la configuration DSC dans VS Code, PowerShell fournit IntelliSense pour les ressources DSC et les propriétés de ressource DSC. Les définitions de ressources dans le chemin d’accès du module $PSHOME
sont automatiquement chargées. Lorsque vous importez des ressources DSC à l’aide du Import-DSCResource
mot clé, les définitions de ressources DSC spécifiées sont ajoutées et IntelliSense est développé pour inclure les schémas des ressources DSC importées.
Lors de la compilation de la configuration DSC, PowerShell utilise les définitions de ressources DSC importées pour valider les blocs de ressource DSC dans le Configuration
bloc. Chaque bloc de ressource DSC est validé par la définition de schéma de la ressource DSC, pour les règles suivantes :
- Seules les propriétés définies dans le schéma sont spécifiées.
- Les types de données pour chaque propriété sont corrects.
- Les propriétés de clés sont spécifiées.
- Aucune propriété en lecture seule n’est spécifiée.
Considérez la configuration DSC suivante :
Configuration SchemaValidationInCorrectEnumValue {
Import-DSCResource -Name User -Module PSDscResources
User ExampleUser {
UserName = 'ExampleDscUser'
Ensure = 'Invalid'
}
}
La compilation de cette configuration DSC génère une erreur.
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 et la validation de schéma vous permettent d’intercepter davantage d’erreurs pendant l’analyse et la compilation, ce qui évite les complications futures.
Notes
Chaque ressource DSC peut avoir un nom et un nom convivial définis par le schéma de la ressource DSC.
Vous trouverez ci-dessous les deux premières lignes de MSFT_UserResource.schema.mof
.
[ClassVersion("1.0.0"), FriendlyName("User")]
class MSFT_UserResource : OMI_BaseResource
Lorsque vous utilisez cette ressource DSC dans un Configuration
bloc, vous pouvez spécifier MSFT_UserResource
ou User
.