Recursos de DSC

Se aplica a Windows PowerShell 4.0 y versiones posteriores.

Información general

Los recursos de la configuración de estado deseado (DSC) ofrecen los bloques de creación para una configuración DSC. Un recurso expone las propiedades que se pueden configurar (el esquema) y contiene las funciones de script de PowerShell a las que el administrador de configuración local (LCM) llama para "que sea así".

Un recurso puede modelar algo tan genérico como un archivo o tan específico como una configuración de servidor IIS. Grupos de recursos similares se combinan en un módulo de DSC, que organiza todos los archivos necesarios en una estructura portátil que incluye los metadatos para identificar cómo están diseñados para usarse los recursos.

Cada recurso tiene un *esquema que determina la sintaxis necesaria para usar el recurso en una configuración. El esquema de un recurso se puede definir de las siguientes maneras:

  • Archivo Schema.Mof: La mayoría de los recursos definen su esquema en un archivo schema.mof, mediante Managed Object Format.
  • Archivo <Resource Name>.schema.psm1: Los recursos compuestos definen su esquema en un archivo <ResourceName>.schema.psm1 con un bloque de parámetros.
  • Archivo <Resource Name>.psm1: Los recursos DSC basados en clase definen su esquema en la definición de clase. Los elementos de sintaxis se denotan como propiedades de la clase. Para más información, consulte about_Classes (Acerca de las clases).

Para recuperar la sintaxis de un recurso DSC, use el cmdlet Get-DSCResource con el parámetro Syntax. Este uso es similar al uso de Get-Command con el parámetro Syntax para obtener la sintaxis del cmdlet. La salida que ve mostrará la plantilla utilizada para un bloque de recursos para el recurso que especifique.

Get-DscResource -Syntax Service

La salida que ve debe ser similar a la salida siguiente, aunque la sintaxis de este recurso podría cambiar en el futuro. Al igual que la sintaxis del cmdlet, las claves que aparecen entre corchetes son opcionales. Los tipos especifican el tipo de datos que espera cada clave.

Nota

La clave Ensure es opcional porque el valor predeterminado es "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

En las versiones de PowerShell inferiores a la 7.0, Get-DscResource no encuentra los recursos de DSC basados en clases.

Dentro de una configuración, un bloque de recursos Service podría parecerse a esto para aplicar Ensure en relación con la ejecución del servicio Spooler.

Nota

Antes de usar un recurso en una configuración, debe importarlo mediante 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"
        }
    }
}

Las configuraciones pueden contener varias instancias del mismo tipo de recurso. Cada instancia debe tener un nombre exclusivo. En el siguiente ejemplo, se agrega un segundo bloque de recursos Service para configurar el servicio "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 partir de PowerShell 5.0, se agregó IntelliSense para DSC. Esta nueva característica permite usar Tabulación y Ctrl+barra espaciadora para completar automáticamente los nombres de clave.

IntelliSense de recursos mediante finalización con tabulación

Tipos de recursos

Windows incluye recursos integrados, y Linux dispone de recursos específicos del sistema operativo. Hay recursos para las dependencias entre nodos, recursos de administración de paquetes y recursos que administra y mantiene la comunidad. Puede usar los pasos anteriores para determinar la sintaxis de estos recursos y cómo usarlos. Las páginas relativas a estos recursos se han almacenado en Referencia.

Recursos integrados de Windows

Recursos de dependencias entre nodos

Recursos de Administración de paquetes

Recursos de Linux