Ресурсы DSC

Относится к Windows PowerShell 4.0 и более поздним версиям.

Обзор

Ресурсы службы настройки требуемого состояния (DSC) предоставляют шаблоны для настройки DSC. В ресурсе представлены свойства, которые можно настроить (схема), и функции сценариев PowerShell, которые вызывает локальный диспетчер конфигураций (LCM).

Ресурс может моделировать что-либо универсальное, например файл, или конкретное, например настройку сервера IIS. Группы похожих ресурсов объединяются в DSC-модуль, в котором все необходимые файлы упорядочиваются в переносимую структуру и включаются метаданные для идентификации целевого предназначения ресурсов.

Каждый ресурс содержит *схему, которая определяет синтаксис, используемый ресурсом при конфигурации. Схема ресурса может быть определена следующими способами.

  • Файл Schema.Mof. Большинство ресурсов определяет свою схему в файле schema.mof с помощью MOF.
  • Файл <Resource Name>.schema.psm1. Составные ресурсы определяют свою схему в файле <ResourceName>.schema.psm1 с помощью блока параметров.
  • Файл <Resource Name>.psm1. Ресурсы DSC, основанные на классе, определяют свою схему в описании класса. Элементы синтаксиса обозначаются как свойства класса. Дополнительные сведения см. в статье About Classes and Desired State Configuration (О классах и настройке требуемого состояния).

Чтобы получить синтаксис из ресурса DSC, используйте командлет Get-DSCResource с параметром Syntax. Это похоже на использование командлета Get-Command с параметром Syntax для получения синтаксиса командлета. В выходных данных будет показан шаблон, используемый в указанном блоке ресурса.

Get-DscResource -Syntax Service

Выходные данные должны соответствовать выходным данным, приведенным ниже, так как в будущем этот ресурс может измениться. Например, синтаксис командлета, для которого ключи в квадратных скобках являются необязательными. Типы указывают типы данных для каждого ключа в списке ожидания.

Примечание

Ключ Ensure является необязательным, так как Present является его значением по умолчанию.

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Примечание

В версиях PowerShell до 7.0 Get-DscResource не находит ресурсы DSC на основе класса.

Блок ресурсов Служба внутри конфигурации может выглядеть следующим образом. Это необходимо, чтобы убедиться, что служба подсистемы печати работает.

Примечание

Перед использованием ресурса в конфигурации его необходимо импортировать с помощью командлета Import-DSCResource.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Конфигурации могут содержать несколько экземпляров одного типа ресурса. Имя каждого экземпляра должно быть уникально. В следующем примере второй блок ресурсов Служба добавляется для настройки службы DHCP.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Примечание

Начиная с PowerShell 5.0, технология IntelliSense включена в DSC. Новая функция позволяет использовать клавиши TAB и CTRL+ПРОБЕЛ для автозаполнения имен ключей.

Технология IntelliSense с использованием заполнения нажатием клавиши TAB

Типы ресурсов

В Windows имеются встроенные ресурсы. Кроме того, существуют ресурсы для ОС Linux. Имеются ресурсы для межузловых зависимостей, ресурсы для управления пакетами, а также ресурсы, принадлежащие сообществу и поддерживаемые им. Шаги, описанные выше, можно использовать для определения синтаксиса этих ресурсов и способов их использования. Страницы, на которых было описано использование этих ресурсов, собраны в разделе Справочные материалы.

Встроенные ресурсы Windows

Ресурсы межузловых зависимостей

Ресурсы управления пакетами

Ресурсы Linux