PowerShell
Tworzenie zasobów opartych na klasie DSC
Szukaj…
Wprowadzenie
Począwszy od wersji 5.0 programu PowerShell, można używać definicji klas programu PowerShell do tworzenia zasobów konfiguracji pożądanego stanu (DSC).
Aby pomóc w budowaniu zasobu DSC, istnieje [DscResource()]
który jest zastosowany do definicji klasy, oraz [DscProperty()]
do oznaczenia właściwości jako konfigurowalnych przez użytkownika zasobu DSC.
Uwagi
Zasób DSC oparty na klasie musi:
- Zdobądź
[DscResource()]
- Zdefiniuj metodę
Test()
, która zwraca[bool]
- Zdefiniuj metodę
Get()
, która zwraca własny typ obiektu (np.[Ticket]
) - Zdefiniuj metodę
Set()
, która zwraca[void]
- Co najmniej jedna
Key
właściwość DSC
Po utworzeniu opartego na klasach zasobu DSC programu PowerShell należy go „wyeksportować” z modułu przy użyciu pliku manifestu modułu (.psd1). W manifeście modułu klucz hashtable DscResourcesToExport
służy do deklarowania tablicy zasobów DSC (nazw klas) w celu „eksportu” z modułu. Umożliwia to konsumentom modułu DSC „zobaczenie” zasobów opartych na klasie wewnątrz modułu.
Utwórz klasę szkieletu zasobów DSC
[DscResource()]
class File {
}
Ten przykład pokazuje, jak zbudować zewnętrzną sekcję klasy PowerShell, która deklaruje zasób DSC. Nadal musisz wypełnić treść definicji klasy.
Szkielet zasobu DSC z kluczową właściwością
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
}
Zasób DSC musi zadeklarować co najmniej jedną właściwość klucza. Kluczową właściwością jest to, co jednoznacznie identyfikuje zasób na podstawie innych zasobów. Załóżmy na przykład, że budujesz zasób DSC, który reprezentuje bilet w systemie sprzedaży biletów. Każdy bilet będzie unikatowo reprezentowany przez identyfikator biletu.
Każda właściwość, która zostanie udostępniona użytkownikowi zasobu DSC, musi być ozdobiona [DscProperty()]
. Ten atrybut akceptuje key
parametr wskazujący, że właściwość jest kluczowym atrybutem dla zasobu DSC.
Zasób DSC z właściwością obowiązkową
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
[DscProperty(Mandatory)]
[string] $Subject
}
Podczas budowania zasobu DSC często okazuje się, że nie każda właściwość powinna być obowiązkowa. Istnieje jednak kilka podstawowych właściwości, które należy upewnić się, że zostały skonfigurowane przez użytkownika zasobu DSC. Parametr Mandatory
[DscResource()]
do deklarowania właściwości wymaganej przez użytkownika zasobu DSC.
W powyższym przykładzie dodaliśmy właściwość Subject
do zasobu Ticket
, która reprezentuje unikalny bilet w systemie biletowym, i oznaczyliśmy ją jako właściwość Mandatory
.
Zasób DSC z wymaganymi metodami
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
# The subject line of the ticket
[DscProperty(Mandatory)]
[string] $Subject
# Get / Set if ticket should be open or closed
[DscProperty(Mandatory)]
[string] $TicketState
[void] Set() {
# Create or update the resource
}
[Ticket] Get() {
# Return the resource's current state as an object
$TicketState = [Ticket]::new()
return $TicketState
}
[bool] Test() {
# Return $true if desired state is met
# Return $false if desired state is not met
return $false
}
}
Jest to kompletny zasób DSC, który pokazuje wszystkie podstawowe wymagania do zbudowania prawidłowego zasobu. Implementacje metod nie są kompletne, ale mają na celu pokazanie podstawowej struktury.