Compartir a través de


Recursos de DSC

Información general

Los recursos de DSC proporcionan una interfaz estandarizada para administrar la configuración de un sistema. Un recurso de DSC define las propiedades que puede administrar y contiene el código de PowerShell que Invoke-DscResource llama a para "hacerlo así".

Un recurso de DSC puede modelar algo como genérico como un archivo o como específico como una configuración de servidor IIS. Los grupos de recursos de DSC relacionados se combinan en módulos de PowerShell. Los módulos proporcionan un paquete portátil con versiones para los recursos de DSC e incluyen metadatos y documentación sobre ellos.

Cada recurso de DSC tiene un esquema que determina la sintaxis necesaria para usar el recurso de DSC con Invoke-DscResource o en una configuración. El esquema de un recurso de DSC se define de las siguientes maneras:

  • <Resource Name>.psm1 file: los recursos de DSC basados en clases definen su esquema en la definición de clase. Los elementos de sintaxis se indican como propiedades de clase. Para más información, consulte about_Classes (Acerca de las clases).
  • Schema.Mof file: los recursos de DSC basados en MOF definen su esquema en un schema.mof archivo, mediante el formato de objeto administrado.

Para recuperar la sintaxis de un recurso de DSC, use el cmdlet Get-DSCResource con el parámetro Syntax . Esto es como usar Get-Command con el parámetro Syntax para obtener la sintaxis del cmdlet. La salida muestra la plantilla usada para un bloque de recursos de DSC en una configuración de 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]]
}

Al igual que la sintaxis del cmdlet, las claves entre corchetes son opcionales. Los tipos especifican el tipo de datos que espera cada clave.

Para asegurarse de que el Spooler servicio se está ejecutando:

$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 variable es una tabla hash que contiene los parámetros utilizados al llamar a los métodos Test y Set del recurso con Invoke-DscResource. La primera llamada a Invoke-DscResource usa el método Test para comprobar si el Spooler servicio se está ejecutando y almacena el resultado en la $TestResult variable .

El siguiente paso depende de si el servicio ya está en estado deseado. Se recomienda comprobar siempre el estado deseado antes de aplicar y llamar solo al método Set cuando sea necesario. En el ejemplo, el script escribe un mensaje en la consola sobre si el recurso de DSC está en el estado deseado. A continuación, si el servicio no se está ejecutando, llama Invoke-DscResource a con el método Set para aplicar el estado deseado.