Udostępnij za pośrednictwem


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.moflokalizacji , 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-xDscResourcePropertyUpdate-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

Inne zasoby

Moduł xDscResourceDesigner