Condividi tramite


Risorse DSC

Panoramica

Le risorse DSC forniscono un'interfaccia standardizzata per la gestione delle impostazioni di un sistema. Una risorsa DSC definisce le proprietà che è possibile gestire e contiene il codice di PowerShell che Invoke-DscResource chiama per "renderlo così".

Una risorsa DSC può modellare un elemento come generico come file o come specifico come impostazione del server IIS. I gruppi di risorse DSC correlate vengono combinati nei moduli di PowerShell. I moduli forniscono un pacchetto portatile e con versione per le risorse DSC e includono metadati e documentazione su di essi.

Ogni risorsa DSC ha uno schema che determina la sintassi necessaria per usare la risorsa DSC con Invoke-DscResource o in una configurazione. Lo schema di una risorsa DSC viene definito nei modi seguenti:

  • <Resource Name>.psm1 file: le risorse DSC basate su classi definiscono lo schema nella definizione della classe. Gli elementi di sintassi vengono denotati come proprietà della classe. Per altre informazioni, vedere about_Classes.
  • Schema.Mof file: le risorse DSC basate su MOF definiscono lo schema in un schema.mof file usando il formato oggetto gestito.

Per recuperare la sintassi per una risorsa DSC, usare il cmdlet Get-DSCResource con il parametro Sintassi . Questo è simile all'uso di Get-Command con il parametro Sintassi per ottenere la sintassi dei cmdlet. L'output mostra il modello usato per un blocco di risorse DSC in una configurazione DSC.

Get-DscResource -Syntax Service
Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DesktopInteract = [bool]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupTimeout = [UInt32]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Ignore | Running | Stopped }]
    [TerminateTimeout = [UInt32]]
}

Come la sintassi dei cmdlet, le chiavi tra parentesi quadre sono facoltative. I tipi specificano il tipo di dati previsto per ogni chiave.

Per assicurarsi che il Spooler servizio sia in esecuzione:

$SharedDscParameters = @{
    Name = 'Service'
    ModuleName = 'PSDscResources'
    Property = @{
        Name  = 'Spooler'
        State = 'Running'
    }
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
    Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
    Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
    Invoke-DscResource -Method Set @SharedDscParameters
}

La $SharedDscParameters variabile è una tabella hash contenente i parametri usati quando si chiamano i metodi Test e Set della risorsa con Invoke-DscResource. La prima chiamata a Invoke-DscResource usa il metodo Test per verificare se il Spooler servizio è in esecuzione e archivia il risultato nella $TestResult variabile.

Il passaggio successivo dipende dal fatto che il servizio sia già nello stato desiderato. È consigliabile verificare sempre lo stato desiderato prima di applicare e chiamare solo il metodo Set quando necessario. Nell'esempio lo script scrive un messaggio nella console su se la risorsa DSC è nello stato desiderato. Se quindi il servizio non è in esecuzione, chiama Invoke-DscResource con il metodo Set per applicare lo stato desiderato.