Partager via


Utilisation d’Import-DSCResource

S’applique à : PowerShell 7, fonctionnalité de configuration de machine d’Azure Automanage

Import-DSCResourceest 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.

IntelliSense dans VS Code pour une ressource DSC

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.

Voir aussi