Korzystanie z narzędzia Projektant zasobów
Dotyczy: Windows PowerShell 4.0, Windows PowerShell 5.0
Narzędzie resource Projektant to zestaw poleceń cmdlet udostępnianych przez moduł xDscResourceDesigner, który ułatwia tworzenie zasobów Windows PowerShell Desired State Configuration (DSC). Polecenia cmdlet w tym zasobie ułatwiają tworzenie schematu MOF, modułu skryptu i struktury katalogów dla nowego zasobu. Aby uzyskać więcej informacji na temat zasobów DSC, zobacz Build Custom Windows PowerShell Desired State Configuration Resources (Tworzenie niestandardowych zasobów Windows PowerShell Desired State Configuration). W tym artykule utworzymy zasób DSC, który zarządza użytkownikami usługi Active Directory. Użyj polecenia cmdlet Install-Module , aby zainstalować moduł xDscResourceDesigner .
Tworzenie właściwości zasobu
Pierwszą rzeczą, którą musimy zrobić, jest decyzja o właściwościach, które będzie uwidaczniać zasób. W tym przykładzie zdefiniujemy użytkownika usługi Active Directory z następującymi właściwościami.
Opis nazwy parametru
- UserName: właściwość klucza, która jednoznacznie identyfikuje użytkownika.
- Upewnij się: określa, czy konto użytkownika powinno być obecne, czy nieobecne. Ten parametr będzie miał tylko dwie możliwe wartości.
- DomainCredential: hasło domeny dla użytkownika.
- Hasło: żądane hasło dla użytkownika, aby zezwolić na zmianę hasła użytkownika w razie potrzeby.
Aby utworzyć właściwości, użyjemy New-xDscResourceProperty
polecenia cmdlet . Następujące polecenia programu PowerShell tworzą właściwości opisane powyżej.
$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
Tworzenie zasobu
Po utworzeniu właściwości zasobu możemy wywołać New-xDscResource
polecenie cmdlet w celu utworzenia zasobu. Polecenie New-xDscResource
cmdlet pobiera listę właściwości jako parametry. Przyjmuje również ścieżkę, w której powinien zostać utworzony moduł, nazwę nowego zasobu oraz nazwę modułu, w którym znajduje się. Następujące polecenie programu PowerShell tworzy zasób.
New-xDscResource –Name Demo_ADUser –Property $UserName, $Ensure, $DomainCredential, $Password –Path 'C:\Program Files\WindowsPowerShell\Modules' –ModuleName Demo_DSCModule
Polecenie New-xDscResource
cmdlet tworzy schemat MOF, skrypt zasobu szkieletu, wymaganą strukturę katalogów dla nowego zasobu i manifest modułu, który uwidacznia nowy zasób.
Plik schematu MOF znajduje się w C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.schema.mof
lokalizacji , a jego zawartość jest następująca.
[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;
};
Skrypt zasobu znajduje się pod adresem C:\Program Files\WindowsPowerShell\Modules\Demo_DSCModule\DSCResources\Demo_ADUser\Demo_ADUser.psm1
.
Nie zawiera rzeczywistej logiki implementowania zasobu, który należy dodać samodzielnie. Zawartość skryptu szkieletu jest następująca.
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
Aktualizowanie zasobu
Jeśli musisz dodać lub zmodyfikować listę parametrów zasobu, możesz wywołać Update-xDscResource
polecenie cmdlet. Polecenie cmdlet aktualizuje zasób za pomocą nowej listy parametrów. Jeśli w skrycie zasobu została już dodana logika, pozostanie nienaruszona.
Załóżmy na przykład, że chcesz uwzględnić czas ostatniego logowania użytkownika w naszym zasobie. Zamiast ponownie pisać zasób ponownie, możesz wywołać metodę , aby utworzyć nową właściwość, a następnie wywołać New-xDscResourceProperty
Update-xDscResource
i dodać nową właściwość do listy właściwości.
$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
Testowanie schematu zasobów
Narzędzie Resource Projektant uwidacznia jeszcze jedno polecenie cmdlet, które może służyć do testowania poprawności schematu MOF napisanego ręcznie. Wywołaj Test-xDscSchema
polecenie cmdlet, przekazując ścieżkę schematu zasobów MOF jako parametr. Polecenie cmdlet wyświetli wszelkie błędy w schemacie.
Zobacz też
Pojęcia
Tworzenie zasobów niestandardowych Windows PowerShell Desired State Configuration