PowerShell
Создание ресурсов класса DSC
Поиск…
Вступление
Начиная с версии PowerShell версии 5.0 вы можете использовать определения класса PowerShell для создания ресурсов конфигурации требуемого состояния (DSC).
Чтобы помочь в создании ресурса DSC, существует [DscResource()]
который применяется к определению класса, и [DscProperty()]
для назначения свойств, которые настраиваются пользователем ресурса DSC.
замечания
Ресурс DSC на основе классов должен:
-
[DscResource()]
атрибут[DscResource()]
- Определите метод
Test()
который возвращает[bool]
- Определите метод
Get()
который возвращает свой собственный тип объекта (например,[Ticket]
) - Определите метод
Set()
который возвращает[void]
- По меньшей мере одно
Key
свойство DSC
После создания ресурса DSC PowerShell на основе класса он должен быть «экспортирован» из модуля с использованием файла манифеста модуля (.psd1). В манифесте модуля ключ DscResourcesToExport
используется для объявления массива ресурсов DSC (имена классов) для «экспорта» из модуля. Это позволяет потребителям модуля DSC «видеть» ресурсы класса в модуле.
Создание класса скелета ресурсов DSC
[DscResource()]
class File {
}
В этом примере показано, как построить внешний раздел класса PowerShell, который объявляет ресурс DSC. Вам все равно нужно заполнить содержание определения класса.
Скелет ресурсов DSC с ключевым свойством
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
}
Ресурс DSC должен объявить хотя бы одно свойство ключа. Ключевое свойство - это то, что уникально идентифицирует ресурс из других ресурсов. Например, предположим, что вы создаете ресурс DSC, который представляет билет в системе продажи билетов. Каждый билет будет уникально представлен идентификатором билета.
Каждое свойство, которое будет отображаться для пользователя ресурса DSC, должно быть украшено [DscProperty()]
. Эти атрибуты принимают key
параметр, указывающий, что это свойство является ключевым атрибутом для ресурса DSC.
Ресурс DSC с обязательным имуществом
[DscResource()]
class Ticket {
[DscProperty(Key)]
[string] $TicketId
[DscProperty(Mandatory)]
[string] $Subject
}
При создании ресурса DSC вы часто обнаружите, что не каждое свойство должно быть обязательным. Тем не менее, есть некоторые основные свойства, которые вы хотите обеспечить, настраиваются пользователем ресурса DSC. Вы используете Mandatory
параметр [DscResource()]
для объявления свойства, как того требует пользователь ресурса DSC.
В приведенном выше примере мы добавили свойство Subject
к ресурсу Ticket
, который представляет собой уникальный билет в системе продажи билетов и обозначил его как Mandatory
свойство.
Ресурс DSC с необходимыми методами
[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
}
}
Это полный ресурс DSC, который демонстрирует все основные требования к созданию допустимого ресурса. Реализации метода не являются полными, но предоставляются с целью показать базовую структуру.