Använda verktyget Resource Designer

Gäller för: Windows PowerShell 4.0, Windows PowerShell 5.0

Verktyget Resource Designer är en uppsättning cmdletar som exponeras av modulen xDscResourceDesigner som gör det enklare att skapa Windows PowerShell Desired State Configuration-resurser (DSC). Cmdletarna i den här resursen hjälper dig att skapa MOF-schemat, skriptmodulen och katalogstrukturen för den nya resursen. Mer information om DSC-resurser finns i Skapa anpassade Windows PowerShell Desired State Configuration-resurser. I den här artikeln skapar vi en DSC-resurs som hanterar Active Directory-användare. Använd cmdleten Install-Module för att installera modulen xDscResourceDesigner .

Skapa resursegenskaper

Det första vi behöver göra är att bestämma vilka egenskaper som resursen ska exponera. I det här exemplet definierar vi en Active Directory-användare med följande egenskaper.

Beskrivning av parameternamn

  • UserName: Nyckelegenskap som unikt identifierar en användare.
  • Kontrollera: Anger om användarkontot ska vara Närvarande eller Frånvarande. Den här parametern har bara två möjliga värden.
  • DomainCredential: Domänlösenordet för användaren.
  • Lösenord: Önskat lösenord för användaren så att en konfiguration kan ändra användarlösenordet om det behövs.

För att skapa egenskaperna använder vi cmdleten New-xDscResourceProperty . Följande PowerShell-kommandon skapar de egenskaper som beskrivs ovan.

$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

Skapa resursen

Nu när resursegenskaperna har skapats kan vi anropa cmdleten New-xDscResource för att skapa resursen. Cmdleten New-xDscResource tar listan över egenskaper som parametrar. Den tar också den sökväg där modulen ska skapas, namnet på den nya resursen och namnet på modulen där den finns. Följande PowerShell-kommando skapar resursen.

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

Cmdleten New-xDscResource skapar MOF-schemat, ett stommeresursskript, den nödvändiga katalogstrukturen för den nya resursen och ett manifest för modulen som exponerar den nya resursen.

MOF-schemafilen är på C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.schema.mofoch dess innehåll är följande.

[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;
};

Resursskriptet finns på C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.psm1. Den innehåller inte den faktiska logiken för att implementera resursen, som du måste lägga till själv. Innehållet i skelettskriptet är följande.

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

Uppdatera resursen

Om du behöver lägga till eller ändra parameterlistan för resursen kan du anropa cmdleten Update-xDscResource . Cmdleten uppdaterar resursen med en ny parameterlista. Om du redan har lagt till logik i resursskriptet lämnas den intakt.

Anta till exempel att du vill inkludera den senaste inloggningstiden för användaren i vår resurs. I stället för att skriva resursen igen helt kan du anropa New-xDscResourceProperty för att skapa den nya egenskapen och sedan anropa Update-xDscResource och lägga till den nya egenskapen i egenskapslistan.

$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

Testa ett resursschema

Verktyget Resource Designer visar ytterligare en cmdlet som kan användas för att testa giltigheten för ett MOF-schema som du har skrivit manuellt. Anropa cmdleten Test-xDscSchema och skicka sökvägen till ett MOF-resursschema som en parameter. Cmdleten matar ut eventuella fel i schemat.

Se även

Begrepp

Skapa anpassade Windows PowerShell Desired State Configuration-resurser

Andra resurser

xDscResourceDesigner-modul