Usando a ferramenta Designer de RecursosUsing the Resource Designer tool

Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

A ferramenta Designer de Recursos é um conjunto de cmdlets expostos pelo módulo xDscResourceDesigner que facilitam a criação de recursos de Configuração de Estado Desejado (DSC) do Windows PowerShell.The Resource Designer tool is a set of cmdlets exposed by the xDscResourceDesigner module that make creating Windows PowerShell Desired State Configuration (DSC) resources easier. Os cmdlets nesse recurso ajudam a criar o esquema MOF, o módulo de script e a estrutura de diretórios para seu novo recurso.The cmdlets in this resource help create the MOF schema, the script module, and the directory structure for your new resource. Para obter mais informações sobre recursos de DSC, consulte Criar recursos personalizados de configuração de estado desejado do Windows PowerShell.For more information about DSC resources, see Build Custom Windows PowerShell Desired State Configuration Resources. Neste tópico, criaremos um recurso de DSC que gerencia os usuários do Active Directory.In this topic, we will create a DSC resource that manages Active Directory users. Use o cmdlet Install-Module para instalar o módulo xDscResourceDesigner.Use the Install-Module cmdlet to install the xDscResourceDesigner module.

Observação: Install-Module está incluído no módulo PowerShellGet, que está incluído no PowerShell 5.0.Note: Install-Module is included in the PowerShellGet module, which is included in PowerShell 5.0. É possível baixar o módulo PowerShellGet para o PowerShell 3.0 e 4.0 em Visualização de Módulos do PowerShell do PackageManagement.You can download the PowerShellGet module for PowerShell 3.0 and 4.0 at PackageManagement PowerShell Modules Preview.

Criando propriedades de recursoCreating resource properties

A primeira coisa que precisamos fazer é decidir sobre as propriedades que serão expostas pelo recuso.The first thing we need to do is decide on properties that the resource will expose. Para esse exemplo, definiremos um usuário do Active Directory com as seguintes propriedades.For this example, we will define an Active Directory user with the following properties.

Nome do parâmetro DescriçãoParameter name Description

  • UserName: propriedade de chave que identifica um usuário com exclusividade.UserName: Key property that uniquely identifies a user.
  • Ensure: especifica se a conta do usuário deve ser do tipo Present ou Absent.Ensure: Specifies whether the user account should be Present or Absent. Esse parâmetro terá apenas dois valores possíveis.This parameter will have only two possible values.
  • DomainCredential: a senha do domínio para o usuário.DomainCredential: The domain password for the user.
  • Password: a senha desejada para o usuário permitir que uma configuração altere a senha do usuário, se necessário.Password: The desired password for the user to allow a configuration to change the user password if necessary.

Para criar as propriedades, usamos o cmdlet novo xDscResourceProperty.To create the properties, we use the New-xDscResourceProperty cmdlet. Os seguintes comandos do PowerShell criam as propriedades descritas acima.The following PowerShell commands create the properties described above.

$UserName = New-xDscResourceProperty –Name UserName -Type String -Attribute Key
$Ensure = New-xDscResourceProperty –Name Ensure -Type String -Attribute Write –ValidateSet “Present”, “Absent”
$DomainCredential = New-xDscResourceProperty –Name DomainCredential-Type PSCredential -Attribute Write
$Password = New-xDscResourceProperty –Name Password -Type PSCredential -Attribute Write

Criar o recursoCreate the resource

Agora que as propriedades do recurso foram criadas, podemos chamar o cmdlet New-xDscResource para criar o recurso.Now that the resource properties have been created, we can call the New-xDscResource cmdlet to create the resource. O cmdlet New-xDscResource utiliza a lista de propriedades como parâmetros.The New-xDscResource cmdlet takes the list of properties as parameters. Também usa o caminho no qual o módulo deve ser criado, o nome do novo recurso e o nome do módulo no qual ele está contido.It also takes the path where the module should be created, the name of the new resource, and the name of the module in which it is contained. O comando do PowerShell a seguir cria o recurso.The following PowerShell command creates the resource.

New-xDscResource –Name Demo_ADUser –Property $UserName, $Ensure, $DomainCredential, $Password –Path ‘C:\Program Files\WindowsPowerShell\Modules’ –ModuleName Demo_DSCModule

O cmdlet New-xDscResource cria o esquema MOF, um script de recurso esqueleto, a estrutura de diretório necessária para o novo recurso e um manifesto para o módulo que expõe o novo recurso.The New-xDscResource cmdlet creates the MOF schema, a skeleton resource script, the required directory structure for your new resource, and a manifest for the module that exposes the new resource.

O arquivo do esquema MOF está em C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.schema.mof e seu conteúdo é o seguinte.The MOF schema file is at C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.schema.mof, and its contents are as follows.

[ClassVersion("1.0.0.0"), FriendlyName("Demo_ADUser")]
class Demo_ADUser : OMI_BaseResource
{
  [Key] string UserName;
  [Write, ValueMap{"Present","Absent"}, Values{"Present","Absent"}] string Ensure;
  [Write, EmbeddedInstance("MSFT_Credential")] String DomainCredential;
  [Write, EmbeddedInstance("MSFT_Credential")] String Password;
};

O script do recurso está em C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.psm1.The resource script is at C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.psm1. Não inclui a lógica real para implementar o recurso, que você mesmo deve adicionar.It does not include the actual logic to implement the resource, which you must add yourself. O conteúdo do script esqueleto é o seguinte.The contents of the skeleton script are as follows.

function Get-TargetResource
{
  [CmdletBinding()]
  [OutputType([System.Collections.Hashtable])]
  param
  (
    [parameter(Mandatory = $true)]
    [System.String]
    $UserName
  )

  #Write-Verbose "Use this cmdlet to deliver information about command processing."

  #Write-Debug "Use this cmdlet to write debug information while troubleshooting."


  <#
  $returnValue = @{
  UserName = [System.String]
  Ensure = [System.String]
  DomainAdminCredential = [System.Management.Automation.PSCredential]
  Password = [System.Management.Automation.PSCredential]
  }

  $returnValue
  #>
}


function Set-TargetResource
{
  [CmdletBinding()]
  param
  (
    [parameter(Mandatory = $true)]
    [System.String]
    $UserName,

    [ValidateSet("Present","Absent")]
    [System.String]
    $Ensure,

    [System.Management.Automation.PSCredential]
    $DomainAdminCredential,

    [System.Management.Automation.PSCredential]
    $Password
  )

  #Write-Verbose "Use this cmdlet to deliver information about command processing."

  #Write-Debug "Use this cmdlet to write debug information while troubleshooting."

  #Include this line if the resource requires a system reboot.
  #$global:DSCMachineStatus = 1


}


function Test-TargetResource
{
  [CmdletBinding()]
  [OutputType([System.Boolean])]
  param
  (
    [parameter(Mandatory = $true)]
    [System.String]
    $UserName,

    [ValidateSet("Present","Absent")]
    [System.String]
    $Ensure,

    [System.Management.Automation.PSCredential]
    $DomainAdminCredential,

    [System.Management.Automation.PSCredential]
    $Password
  )

  #Write-Verbose "Use this cmdlet to deliver information about command processing."

  #Write-Debug "Use this cmdlet to write debug information while troubleshooting."


  <#
  $result = [System.Boolean]

  $result
  #>
}


Export-ModuleMember -Function *-TargetResource

Atualizando o recursoUpdating the resource

Se você precisar adicionar ou modificar a lista de parâmetros do recurso, poderá chamar o cmdlet Update-xDscResource.If you need to add or modify the parameter list of the resource, you can call the Update-xDscResource cmdlet. O cmdlet atualiza o recurso com uma nova lista de parâmetros.The cmdlet updates the resource with a new parameter list. Se você já tiver adicionado lógica no script do recurso, ele permanecerá intacto.If you have already added logic in your resource script, it is left intact.

Suponha, por exemplo, que você deseja incluir o horário do último logon para o usuário no nosso recurso.For example, suppose you want to include the last log in time for the user in our resource. Em vez de reescrever o recurso por completo, é possível chamar New-xDscResourceProperty para criar a nova propriedade e, depois, chamar Update-xDscResource e adicionar a nova propriedade à sua lista de propriedades.Rather than writing the resource again completely, you can call the New-xDscResourceProperty to create the new property, and then call Update-xDscResource and add your new property to the properties list.

$lastLogon = New-xDscResourceProperty –Name LastLogon –Type Hashtable –Attribute Write –Description “For mapping users to their last log on time”
Update-xDscResource –Name ‘Demo_ADUser’ –Property $UserName, $Ensure, $DomainCredential, $Password, $lastLogon -Force

Testando um esquema de recursosTesting a resource schema

A ferramenta Designer de Recursos expõe mais um cmdlet que pode ser usado para testar a validade de um esquema MOF escrito manualmente.The Resource Designer tool exposes one more cmdlet that can be used to test the validity of a MOF schema that you have written manually. Chame o cmdlet Test-xDscSchema, passando o caminho de um esquema de recursos MOF como parâmetro.Call the Test-xDscSchema cmdlet, passing the path of a MOF resource schema as a parameter. O cmdlet mostrará os erros no esquema.The cmdlet will output any errors in the schema.

Consulte TambémSee Also

ConceitosConcepts

Criar recursos personalizados de configuração de estado desejado do Windows PowerShellBuild Custom Windows PowerShell Desired State Configuration Resources

Outros recursosOther Resources

xDscResourceDesigner ModulexDscResourceDesigner Module (Módulo xDscResourceDesigner)