Condividi tramite


Uso di Import-DSCResource

Si applica a: PowerShell 7, funzionalità di configurazione del computer di Gestione automatica di Azure

Import-DSCResource è una parola chiave dinamica, che può essere usata solo all'interno di un Configuration blocco per importare tutte le risorse necessarie nella configurazione DSC. Le risorse DSC in $PSHOME vengono importate automaticamente, ma è consigliabile importare in modo esplicito tutte le risorse DSC usate nella configurazione DSC.

La sintassi per Import-DSCResource è illustrata di seguito. Quando si specificano i moduli in base al nome, è necessario elencare ognuno di essi in una nuova riga.

Import-DscResource [-Name <ResourceName(s)>]
 [-ModuleName <ModuleName>]
 [-ModuleVersion <ModuleVersion>]

Parametri

  • Name : risorse da importare. Se viene specificato il nome del modulo, il comando cerca queste risorse DSC all'interno di tale modulo; in caso contrario, il comando cerca le risorse DSC in tutti i moduli. Sono supportati caratteri jolly.
  • ModuleName : nome del modulo o specifica del modulo. Se si specificano risorse DSC da importare da un modulo, il comando tenta di importare solo le risorse DSC. Se si specifica solo il modulo, il comando importa tutte le risorse DSC nel modulo.
  • ModuleVersion : è possibile specificare la versione di un modulo che deve essere usata con questo parametro. Per impostazione predefinita, viene importata la versione più recente disponibile della risorsa DSC.
Import-DSCResource -ModuleName xActiveDirectory

Esempio: usare Import-DSCResource all'interno di una configurazione 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
...

Nota

La specifica di più valori per i nomi di risorse DSC e i nomi dei moduli nello stesso comando non è supportata. Può avere un comportamento non deterministico su quale risorsa DSC caricare da quale modulo se la stessa risorsa DSC esiste in più moduli. Il comando seguente restituisce un errore durante la compilazione.

Import-DSCResource -Name Service, TimeZone -ModuleName PSDscResources, xPSDesiredStateConfiguration

Aspetti da considerare quando si usa solo il parametro Name :

  • Si tratta di un'operazione a elevato utilizzo di risorse a seconda del numero di moduli installati nel computer.
  • Carica la prima risorsa DSC trovata con il nome specificato. Se sono installate più risorse DSC con lo stesso nome, potrebbe caricare la risorsa DSC errata.

L'utilizzo consigliato consiste nel specificare ModuleName con il parametro Name , come descritto di seguito.

Questo utilizzo offre i vantaggi seguenti:

  • Riduce l'impatto sulle prestazioni limitando l'ambito di ricerca per la risorsa DSC specificata.
  • Definisce in modo esplicito il modulo che fornisce la risorsa DSC, assicurando il caricamento della risorsa DSC corretta.

Nota

Le risorse DSC possono avere più versioni e le versioni possono essere installate in un computer side-by-side. Questa operazione viene implementata con più versioni di un modulo risorsa DSC contenute nella stessa cartella del modulo.

IntelliSense con Import-DSCResource

Quando si crea la configurazione DSC in VS Code, PowerShell fornisce IntelliSense per le risorse DSC e le proprietà delle risorse DSC. Le definizioni delle risorse nel percorso del modulo $PSHOME vengono caricate automaticamente. Quando si importano risorse DSC usando la Import-DSCResource parola chiave , vengono aggiunte le definizioni delle risorse DSC specificate e IntelliSense viene espanso per includere gli schemi delle risorse DSC importate.

IntelliSense in VS Code per una risorsa DSC

Quando si compila la configurazione DSC, PowerShell usa le definizioni di risorsa DSC importate per convalidare i blocchi di risorse DSC nel Configuration blocco. Ogni blocco di risorse DSC viene convalidato dalla definizione dello schema della risorsa DSC per le regole seguenti:

  • Vengono specificate solo le proprietà definite nello schema.
  • I tipi di dati per ogni proprietà sono corretti.
  • Sono specificate le proprietà delle chiavi.
  • Non viene specificata alcuna proprietà di sola lettura.

Prendere in considerazione la configurazione DSC seguente:

Configuration SchemaValidationInCorrectEnumValue {
    Import-DSCResource -Name User -Module PSDscResources

    User ExampleUser {
        UserName = 'ExampleDscUser'
        Ensure   = 'Invalid'
    }
}

La compilazione di questa configurazione DSC genera un errore.

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 e la convalida dello schema consentono di rilevare più errori durante l'analisi e il tempo di compilazione, evitando complicazioni future.

Nota

Ogni risorsa DSC può avere un nome e un FriendlyName definito dallo schema della risorsa DSC. Di seguito sono riportate le prime due righe di MSFT_UserResource.schema.mof.

[ClassVersion("1.0.0"), FriendlyName("User")]
class MSFT_UserResource : OMI_BaseResource

Quando si usa questa risorsa DSC in un Configuration blocco, è possibile specificare MSFT_UserResource o User.

Vedere anche