Buscar..


Introducción

A partir de la versión 5.0 de PowerShell, puede usar las definiciones de clase de PowerShell para crear recursos de configuración de estado deseado (DSC).

Para ayudar en la creación del recurso DSC, hay un [DscResource()] que se aplica a la definición de la clase y un [DscProperty()] para designar propiedades configurables por el usuario del recurso DSC.

Observaciones

Un recurso DSC basado en clase debe:

  • Ser decorado con el [DscResource()]
  • Define un método Test() que devuelve [bool]
  • Defina un método Get() que devuelva su propio tipo de objeto (por ejemplo, [Ticket] )
  • Define un método Set() que devuelve [void]
  • Al menos una propiedad Key DSC

Después de crear un recurso DSC de PowerShell basado en clase, debe ser "exportado" desde un módulo, usando un archivo de manifiesto de módulo (.psd1). Dentro del manifiesto del módulo, la clave de tabla hash DscResourcesToExport se utiliza para declarar una matriz de recursos DSC (nombres de clase) para "exportar" desde el módulo. Esto permite a los consumidores del módulo DSC "ver" los recursos basados ​​en clase dentro del módulo.

Crear una clase de esqueleto de recursos DSC

[DscResource()]
class File {
}

Este ejemplo muestra cómo construir la sección externa de una clase de PowerShell, que declara un recurso DSC. Aún debe completar los contenidos de la definición de clase.

DSC Resource Skeleton con propiedad clave

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId
}

Un recurso DSC debe declarar al menos una propiedad clave. La propiedad clave es lo que identifica de forma única el recurso de otros recursos. Por ejemplo, digamos que está creando un recurso DSC que representa un ticket en un sistema de tickets. Cada boleto estaría representado de manera única con un ID de boleto.

Cada propiedad que se expondrá al usuario del recurso DSC debe estar decorada con el [DscProperty()] . Este atributo acepta un parámetro key , para indicar que la propiedad es un atributo clave para el recurso DSC.

Recurso DSC con propiedad obligatoria

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId

  [DscProperty(Mandatory)]
  [string] $Subject
}

Al crear un recurso de DSC, a menudo encontrará que no todas las propiedades deben ser obligatorias. Sin embargo, hay algunas propiedades centrales que querrá asegurarse de que estén configuradas por el usuario del recurso DSC. Utiliza el parámetro Mandatory del [DscResource()] para declarar una propiedad según lo requiera el usuario del recurso DSC.

En el ejemplo anterior, hemos agregado una propiedad del Subject a un recurso de Ticket , que representa un boleto único en un sistema de boleto, y lo hemos designado como una propiedad Mandatory .

Recurso DSC con métodos requeridos

[DscResource()]
class Ticket {
  [DscProperty(Key)]
  [string] $TicketId

  # The subject line of the ticket
  [DscProperty(Mandatory)]
  [string] $Subject

  # Get / Set if ticket should be open or closed
  [DscProperty(Mandatory)]
  [string] $TicketState

  [void] Set() {
    # Create or update the resource
  }

  [Ticket] Get() {
    # Return the resource's current state as an object
    $TicketState = [Ticket]::new()
    return $TicketState
  }

  [bool] Test() {
    # Return $true if desired state is met
    # Return $false if desired state is not met
    return $false
  }
}

Este es un recurso de DSC completo que muestra todos los requisitos básicos para construir un recurso válido. Las implementaciones del método no están completas, pero se proporcionan con la intención de mostrar la estructura básica.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow