Risorse DSC

Si applica a Windows PowerShell 4.0 e versioni successive.

Panoramica

Le risorse DSC (Desired State Configuration) forniscono i blocchi predefiniti per una configurazione DSC. Una risorsa espone le proprietà che possono essere configurate (schema) e contiene le funzioni di script di PowerShell chiamate da Gestione configurazione locale per assicurare il risultato desiderato.

Una risorsa può modellare un elemento generico come un file o uno specifico come un'impostazione del server IIS. I gruppi di tali risorse sono combinati in un modulo DSC, che organizza tutti i file necessari in una struttura portatile che include i metadati che permettono di identificare il modo in cui si intende usare le risorse.

Ogni risorsa dispone di uno *schema che determina la sintassi necessaria per usare la risorsa in una configurazione. Lo schema di una risorsa può essere definito nei modi seguenti:

  • File Schema.Mof: la maggior parte delle risorse definisce lo schema in un file schema.mof con Managed Object Format.
  • File <Resource Name>.schema.psm1: le risorse composite definiscono lo schema in un file <ResourceName>.schema.psm1 con un blocco di parametri.
  • File <Resource Name>.psm1: le risorse DSC basate su classe definiscono lo schema nella definizione della classe. Gli elementi della sintassi sono contrassegnati come proprietà della classe. Per altre informazioni, vedere about_Classes.

Per recuperare la sintassi per una risorsa DSC, usare il cmdlet Get-DSCResource con il parametro Syntax. Questo utilizzo è simile all'uso di Get-Command con il parametro Syntax per ottenere la sintassi del cmdlet. L'output visualizzato indicherà il modello usato per un blocco di risorse per la risorsa specificata.

Get-DscResource -Syntax Service

L'output visualizzato dovrebbe essere simile all'output seguente, anche se la sintassi di questa risorsa potrebbe cambiare in futuro. Come nella sintassi dei cmdlet, le chiavi racchiuse tra parentesi quadre sono facoltative. I tipi specificano il tipo di dati previsto da ogni chiave.

Nota

La chiave Ensure è facoltativa perché l'impostazione predefinita è "Present".

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Nota

Nelle versioni di PowerShell precedenti alla 7.0, Get-DscResource non trova risorse DSC basate su classi.

All'interno di una configurazione, un blocco di risorse Service potrebbe avere questo aspetto per assicurare (Ensure) che il servizio spooler sia in esecuzione.

Nota

Prima di usare una risorsa in una configurazione, è necessario importarla tramite Import-DSCResource.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Le configurazioni possono contenere più istanze dello stesso tipo di risorsa. Ogni istanza deve essere denominata in modo univoco. Nell'esempio seguente viene aggiunto un secondo blocco di risorse Service per configurare il servizio "DHCP".

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Nota

A partire da PowerShell 5.0 è stato aggiunto IntelliSense per DSC. Questa nuova funzionalità consente di usare TAB e CTRL+BARRA SPAZIATRICE per il completamento automatico dei nomi delle chiavi.

IntelliSense con completamento tramite TAB

Tipi di risorse

Windows include risorse predefinite e Linux ha risorse specifiche del sistema operativo. Sono disponibili risorse per le dipendenze tra nodi, le risorse di gestione dei pacchetti, nonché le risorse di proprietà della community e gestite. È possibile usare i passaggi precedenti per determinare la sintassi di queste risorse e come usarle. Le pagine relative a queste risorse sono archiviate in Riferimento.

Risorse predefinite di Windows

Risorse per le dipendenze tra nodi

Risorse di gestione pacchetti

Risorse di Linux