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.mof
och 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