Použití nástroje Resource Designer
Platí pro: Windows PowerShell 4.0, Windows PowerShell 5.0
Nástroj Resource Designer je sada rutin zpřístupněných modulem xDscResourceDesigner, které usnadňují vytváření prostředků Windows PowerShell Desired State Configuration (DSC). Rutiny v tomto prostředku pomáhají vytvořit schéma MOF, skriptovací modul a adresářovou strukturu pro nový prostředek. Další informace o prostředcích DSC najdete v tématu Sestavení vlastních prostředků Windows PowerShell Desired State Configuration. V tomto článku vytvoříme prostředek DSC, který spravuje uživatele služby Active Directory. K instalaci modulu xDscResourceDesigner použijte rutinu Install-Module.
Vytváření vlastností prostředku
První věcí, kterou musíme udělat, je rozhodnutí o vlastnostech, které prostředek zveřejní. V tomto příkladu definujeme uživatele služby Active Directory s následujícími vlastnostmi.
Popis názvu parametru
- UserName: Vlastnost klíče, která jednoznačně identifikuje uživatele.
- Ujistěte se: Určuje, jestli má být uživatelský účet Přítomný nebo Chybí. Tento parametr bude mít pouze dvě možné hodnoty.
- DomainCredential: Heslo domény uživatele.
- Heslo: Požadované heslo pro uživatele, které umožní konfiguraci změnit heslo uživatele v případě potřeby.
K vytvoření vlastností použijeme rutinu New-xDscResourceProperty
. Následující příkazy PowerShellu vytvoří vlastnosti popsané výše.
$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
Vytvoření prostředku
Teď, když jsou vlastnosti prostředku vytvořené, můžeme k vytvoření prostředku volat New-xDscResource
rutinu . Rutina New-xDscResource
přebírá seznam vlastností jako parametry. Použije také cestu, kde se má modul vytvořit, název nového prostředku a název modulu, ve kterém je obsažen. Následující příkaz PowerShellu vytvoří prostředek.
New-xDscResource –Name Demo_ADUser –Property $UserName, $Ensure, $DomainCredential, $Password –Path 'C:\Program Files\WindowsPowerShell\Modules' –ModuleName Demo_DSCModule
Rutina New-xDscResource
vytvoří schéma MOF, skript kostry prostředků, požadovanou adresářovou strukturu pro nový prostředek a manifest pro modul, který nový prostředek zpřístupní.
Soubor schématu MOF je na C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.schema.mof
adrese a jeho obsah je následující.
[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;
};
Skript prostředků je v C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.psm1
.
Nezahrnuje skutečnou logiku implementace prostředku, kterou musíte přidat sami. Obsah kostry skriptu je následující.
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
Aktualizuje se prostředek.
Pokud potřebujete přidat nebo upravit seznam parametrů prostředku, můžete zavolat rutinu Update-xDscResource
. Rutina aktualizuje prostředek novým seznamem parametrů. Pokud jste už do skriptu prostředků přidali logiku, zůstane beze změny.
Předpokládejme například, že chcete do našeho prostředku zahrnout čas posledního přihlášení uživatele. Místo opětovného kompletního zápisu prostředku můžete voláním New-xDscResourceProperty
metody vytvořit novou vlastnost a poté zavolat Update-xDscResource
a přidat novou vlastnost do seznamu vlastností.
$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
Testování schématu prostředků
Nástroj Resource Designer zveřejňuje jednu další rutinu, kterou můžete použít k otestování platnosti schématu MOF, které jste napsali ručně. Zavolejte rutinu Test-xDscSchema
a předejte cestu ke schématu prostředků MOF jako parametru. Rutina vypíše všechny chyby ve schématu.
Viz také
Koncepty
Vytváření vlastních prostředků Windows PowerShell Desired State Configuration