Dsc windows что это

Обновлено: 05.07.2024

Одним из нововведений, появившихся в PowerShell 4.0, стал механизм настройки требуемого состояния (DSC - Desired State Configuration), позволяющий задавать настройки ОС и приложений в виде конфигурационного файла с использованием синтаксиса PowerShell и затем применить их к компьютеру. Как и в других системах управления конфигурациями вроде Puppet или Ansible администратор описывает требуемую конфигурацию (целевое состояние) вместо указания конкретных команд или скриптов, которые должны быть выполнены.

Файл конфигурации DSC содержит описание целевого состояния для одного или нескольких узлов (node). Внутри описания содержится перечень ресурсов (resource) и настройки, которые должны быть к ним применены. Существует множество типов встроенных ресурсов, таких как file, environment, registry, script, service, user и т.д., позволяющих задавать описание для соответствующих объектов системы, например, ресурс типа service описывает требуется ли включить или отключить службу, и под какой учетной записью требуется ее запускать. Помимо встроенных ресурсов поддерживается добавление ресурсов от сторонних разработчиков, что позволяет расширить возможности DSC по конфигурированию системы.

Конфигурационный файл может включать в себя описание состояния одного или нескольких узлов.
Большим плюсом DSC является поддержка синтаксиса PowerShell, что позволяет упростить написание конфигурационных файлов. Например вместо того, чтобы описывать каждый сервис в отдельности:
можно использовать циклы и передавать значение параметров через переменные:
На основании конфигурационного файла для каждого узла генерируется отдельный файл в MOF формате (Management Object Format).

Существует два способа применения настроек из MOF файлов. При Push методе настройки распространяются с административной рабочей станции на целевые компьютеры через Windows Remote Management (WinRM). Для этого используется команда Start-DscConfiguration с аргументом -Path, которые указывает путь к каталогу, содержащему MOF файлы. Перед тем, как использовать Push метод требуется настроить политику выполнения "Set-ExecutionPolicy RemoteSigned" и включить удаленное выполнение PowerShell при помощи команды "Enable-PSRemoting".


Со временем настройки, сделанные с помощью DSC, могут изменяться. Проверить наличие расхождений между текущими настройками и конфигурационным файлом можно при помощи команды Test-DscConfiguration, а с помощью команды Get-DscConfiguration можно получить значение текущих настроек системы.

Во втором методе (Pull) настраиваемые компьютеры подключаются к файловому серверу (репозиторию конфигурационных файлов) и самостоятельно загружают и применяют настройки.

Для демонстрации работы DSC я создал конфигурационный файл для настройки виртуальной рабочей станции с ОС Windows 10 для работы в среде VDI. Файл отключает ряд неиспользуемых служб и задач из планировщика Windows, задает ряд настроек оптимальных для работы в виртуальной среде, создает локальную учетную запись пользователя с именем User и паролем "P@ssw0rd", копирует дистрибутив Horizon Agent с файлового сервера и выполняет установку.
Часть настроек выполняется при помощи ресурсов типа script, позволяющих выполнять произвольный код на PowerShell.

Подводя итоги, DSC является простым и эффективным способом привести состояние системы к желаемому виду, минимизируя количество кода, котое требуется дла этого написать.

Во многом работа системного администратора не отличается оригинальностью задач. Так или иначе, большинство заданий – это повторяющиеся операции, которые сводятся к созданию, удалению, изменению настроек, установки и настройки ролей и компонентов системы. Абсолютно естественным является желание максимально автоматизировать такие задачи. Одним из инструментов, спешащих на помощь администратору, является PowerShell Desired State Configuration, которая впервые была представлена в Windows Server 2012 R2. О том, что это такое и как может облегчить жизнь IT-специалиста использование Desired State Configuration мы и поговорим в этой статье.



Логично начать с того, что же вообще такое PowerShell Desired State Configuration. Я в большинстве случаев не люблю переводить английские термины, т.к. не всегда переведенный вариант отражает нужный смысл. В этом случае, мы имеем дело с исключением. Desired State Configuration переводится как «настройка требуемого состояния», и этот перевод как нельзя лучше отражает смысл технологии.

Используя PowerShell DSC, вы описываете как хотите, чтобы ваша система выглядела в конечном итоге, и далее происходит ее автоматическая настройка в соответствии с заданными требованиями.

PowerShell Desired State Configuration – это очень мощный инструмент, который может значительно облегчить вам процесс настройки системы. Недавно на портале MVA вышел курс, в котором рассказывается обо всех аспектах этой технологии. А в этой статье я хочу рассказать о технологии и её основных преимуществах.

Системные требования

Конфигурация и её применение

Использование Desired State Configuration позволяет решить эту проблему. Далее я приведу конфигурационный скрипт, с помощью которого мы проведем настройку.

С одной стороны, PowerShell DSC начинается с конфигурационного скрипта. С другой, этот скрипт не делает абсолютно НИ-ЧЕ-ГО! В нем мы просто декларативно описываем, как хотим, чтобы система выглядела.

В DSC было введено новое ключевое слово Configuration, с помощью которого описывается главный контейнер конфигурации. По сути, этот блок является функцией. Внутри блока Сonfiguration вы можете указать желаемые настройки для каждого из компьютеров, которые есть в вашем окружении.

Блок конкретного компьютера начинается с ключевого слова Node. Далее следует имя целевого компьютера, которое может быть как постоянным, так и задаваться при помощь переменной. Внутри блока Node вы уже указываете желаемую настройку для вашего конечного компьютера, с помощью ресурсов.

Ресурсы DSC – это специализированные модули PowerShell, с помощью которых и осуществляется финальная настройка целевых узлов. Ресурсы разделяются на встроенные и пользовательские. Встроенных ресурсов всего 12. Тем не менее легко можно дописать недостающие ресурсы, если возникнет такая необходимость.

Что происходит в нашем скрипте?
Мы просто описываем то, как наша система должна выглядеть.


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

Применение конфигурации выглядит следующим образом:

После запуска конфигурационного скрипта создается MOF-файл (или Managed Object Format файл). Это текстовый файл, в котором содержатся все требования по настройке, которые в дальнейшем применяются на целевом компьютере. Имя MOF-файла будет соответствовать значению Node. Сам файл будет находиться в папке, название которой будет совпадать с названием Configuration. Здесь важно отметить, что использование MOF-файлов позволяет использовать DSC не только для настройки компьютеров под управлением Windows, но и под управлением Linux.

Далее необходимо MOF-файл передать на целевой компьютер (на котором мы хотим развернуть сайт). Конфигурация применяется двумя способами: с помощью метода Push (конфигурационный скрипт должен быть перенесен на конечный компьютер вручную) или метода Pull (создается Pull Server, который периодически проверяет корректность конфигурации, и если клиент сконфигурирован неверно, то Pull Server отправляет на него требуемые настройки). Применение конфигурации осуществляется с помощью следующего командлета:


C помощью параметра –Path указываем путь к MOF-файлу. Время применения конфигурации зависит от того, насколько соответствует текущая настройка компьютера тем требованиям, что указаны в MOF-файле.

После применения конфигурации возможность PowerShell DSC не заканчиваются. Ведь часто нам нужно определить произошли ли какие-то изменения в настройках. Сделать это можно с помощью командлета:


Запустив его, мы запустим проверку: совпадает ли текущая конфигурация системы с той, что прописана в MOF-файле. Если конфигурации совпадают, то будет возвращено значение «True», в противном случае – «False».

Что делать, если мы узнаем об изменении конфигурации? Если мы используем PowerShell DSC достаточно всего лишь снова запустить командлет:


И все недостающие элементы будут восстановлены.

Преимущества Desired State Configuration

Подробнее о том, как создавать свои собственные ресурсы или как настроить Pull Server для PowerShell DSC вы можете узнать из курса на портале MVA.

Удачи в применение PowerShell Desired State Configuration для настройки ваших систем!

В этом разделе объясняется, как приступить к работе с Desired State Configuration (DSC) в PowerShell для Windows. Общие сведения о службе настройки требуемого состояния см. в разделе Начало работы со службой настройки требуемого состояния Windows PowerShell.

Поддерживаемые версии операционной системы Windows

Поддерживаются следующие версии:

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2;
  • Windows Server 2012
  • Windows Server 2008 R2 с пакетом обновления 1 (SP1)
  • Windows 11
  • быть под управлением ОС Windows 10;
  • Windows 8.1
  • Windows 7

Номер SKU автономного продукта Microsoft Hyper-V Server не содержит реализацию Desired State Configuration, поэтому управлять им с помощью DSC PowerShell или настройки состояния службы автоматизации Azure невозможно.

Установка DSC

Desired State Configuration в PowerShell входит в состав Windows и обновляется с помощью Windows Management Framework. Последняя версия — Windows Management Framework 5.1.

Для управления компьютером с помощью DSC не нужно включать компонент Windows Server "DSC-Service". Этот компонент необходим только при создании экземпляра опрашиваемого сервера Windows.

Использование DSC для Windows

В следующих разделах описывается создание и запуск конфигураций DSC на компьютерах Windows.

Создание MOF-документа конфигурации

Для создания конфигурации используется ключевое слово Windows PowerShell ( Configuration ). В инструкциях ниже описывается создание документа конфигурации с использованием Windows PowerShell.

Установка модуля, содержащего ресурсы DSC

Desired State Configuration в Windows PowerShell включает встроенные модули, содержащие ресурсы DSC. Модули также можно загружать из внешних источников, таких как коллекция PowerShell, с помощью командлетов PowerShellGet.

Определение конфигурации и создание документа конфигурации

Применение конфигурации к компьютеру

Чтобы разрешить выполнение DSC, Windows необходимо настроить для получения удаленных команд PowerShell, даже когда вы запускаете конфигурацию localhost . Чтобы правильно настроить среду, запустите Set-WsManQuickConfig -Force в терминале PowerShell с повышенными привилегиями.

Документы конфигурации (MOF-файлы) можно применить к компьютеру с помощью командлета Start-DscConfiguration.

Получение данных о текущем состоянии конфигурации

Командлет Get-DscConfiguration запрашивает текущее состояние компьютера и возвращает текущие значения для конфигурации.

Командлет Get-DscLocalConfigurationManager возвращает текущую метаконфигурацию, примененную к компьютеру.

Удаление текущей конфигурации с компьютера

Настройка параметров в локальном диспетчере конфигураций

Примените MOF-файл метаконфигурации к компьютеру с помощью командлета Set-DSCLocalConfigurationManager. При этом потребуется указать путь к соответствующему MOF-файлу метаконфигурации.

Файлы журнала Desired State Configuration в Windows PowerShell

Журналы DSC записываются в журнал событий Windows по пути Microsoft-Windows-Dsc/Operational . Дополнительные журналы для отладки можно включить, выполнив действия, описанные в разделе Где находятся журналы событий DSC?

Windows PowerShell Desired State Configuration (конфигурация желаемого состояния) (DSC) в настоящее время горячая тема для разговора. DSC - это новая платформа управления конфигурацией, с помощью которой администраторы могут использовать Windows PowerShell для развёртывания и управления программными службами, а также управлять средой, где работают эти службы.

Desired State Configuration

Windows Server 2016 представляет несколько улучшений для DSC, давайте рассмотрим два из них - новый локальный диспетчер конфигурации и новую функцию частичной конфигурации.

DSC Local Configuration Manager

Один из ключевых компонентов DSC - Local Configuration Manager (LCM), механизм DSC, отвечающий за обработку и ввод конфигурационных документов (.mof файлов).

LCM принимает (режим push), извлекает (режим pull), применяет, контролирует, сравнивает, сообщает о дрейфе и применяет (или повторно использует) документы конфигурации. Излишне говорить, что LCM - это сердце и мозг DSC.

Windows Server 2016 поставляется с предустановленными Windows Management Framework 5.1 и DSC. DSC был представлен с Windows Management Framework 4.0 (также доступна загрузка для более ранних версий Windows) и был установлен в Windows Server 2012 R2 и Windows 8.1. Как и следовало ожидать, в Windows Management Framework 5.1, в DSC и LCM появилось много новых функций и изменений.

Вы можете настроить LCM и DCS-двигатель, применив документ Meta Configuration (meta.mof). На поведение и действия LCM можно влиять и контролировать, изменяя свойства Meta Configuration.

DSC v2 в Windows Server 2016 основываясь на предыдущей версии, предлагает новые командлеты для управления конфигурациями, новый LCM с дополнительной функциональностью, новые атрибуты Meta Configuration и новые функции, такие как частичные конфигурации и межмашинная синхронизация.

LCM реализуется как общая информационная модель/Common Information Model (CIM) класса MSFT_DSCLocalConfigurationManager в корневом пространстве имён \Microsoft\Windows\DesiredStateConfiguration.

Давайте рассмотрим новую функциональность и работу LCM v2 на Windows Server 2016.

DSC, для доступа к LCM, предоставляет два командлета - просмотр и обновление свойств LCM: Get-DSCLocalConfigurationManager для просмотра и Set-DSCLocalConfigurationManager для настройки. Запуск Get-DSCLocalConfigurationManager на Windows Server 2016 Windows, в консоли PowerShell, перечисляет все свойства конфигурации метаданных LCM вместе с их текущими значениями.

Значения по умолчанию показаны в следующих выходных данных:

PS C:\> Get-DscLocalConfigurationManager

ActionAfterReboot : ContinueConfiguration
AgentId : C8F7308B-6E6D-11E6-899F-B4AE2BEB7DE5
AllowModuleOverWrite : False
CertificateID :
ConfigurationDownloadManagers : <>
ConfigurationID :
ConfigurationMode : ApplyAndMonitor
ConfigurationModeFrequencyMins : 15

Credential :
DebugMode :
DownloadManagerCustomData :
DownloadManagerName :
LCMCompatibleVersions :
LCMState : Idle
LCMStateDetail :
LCMVersion : 2.0
StatusRetentionTimeInDays : 10
SignatureValidationPolicy : NONE
SignatureValidations : <>
MaximumDownloadSizeMB : 500
PartialConfigurations :
RebootNodeIfNeeded : False
RefreshFrequencyMins : 30
RefreshMode : PUSH
ReportManagers : <>
ResourceModuleManagers : <>
PSComputerName :

LCM, в Windows Server 2016, для обратной совместимости включает все свойства из первой версии. Большинство из этих свойств необходимы и в новой версии, но некоторые устарели и не могут использоваться для настройки LCM в Windows PowerShell V5.

С новыми параметрами LCM, вместо одной конфигурации, можно иметь несколько её фрагментов. Свойства более организованы, каждый с чётко определённым использованием. Вы можете запросить текущее состояние LCM, включить и отключить кэширование и отдельные конечные точки URL для конфигураций и ресурсов.

В Windows PowerShell V4, DSC, для настройки свойств конфигурации метаданных LCM, использовал специальный ресурс LocalConfigurationManager. Этот ресурс для LCM в Windows PowerShell V5 устарел. Вы можете использовать его для настройки LCM v2; однако он не может настроить новые свойства Meta Configuration. Вместо этого, для задания свойств LCM, рекомендуется использовать новый ресурс параметров.

Вы можете установить свойства MetaConfiguration, выполнив несколько последовательных шагов. Как уже упоминалось, в LCM v2, для настройки свойств Meta Configuration LCM, следует использовать новый специальный ресурс "Settings". Вы должны поместить этот новый ресурс в сценарий конфигурации и запустить его. Запуск ресурса генерирует файл meta.mof, который отправляется в LCM сервера назначения. LCM целевого сервера применяет и изменяет значения свойств Meta Configuration.

Обратите внимание, что конфигурация LCM в обычной конфигурации, содержащей общие ресурсы DSC не допускается. Наряду с ресурсом «Настройки» в LCM v2 включены ещё несколько, специфичных для LCM, ресурсов. Эти ресурсы LCM обеспечивают лучший авторский опыт и в конечном итоге изменяют доступные в ресурсе Settings свойства. Они сводятся к следующему:

- Settings. Это основной ресурс LCM Meta Configuration.
- ConfigurationRepositoryWeb. Этот ресурс представляет Internet Information Services (IIS) Open Data Protocol (OData), конечную точку для опрашивающих серверов. Он изменяет свойство ConfigurationDownloadManages ресурса Settings.

Обладает следующими свойствами:

- ConfigurationNames
- ServerUrl
- AllowUnsecureConnection
- CertificateID
- RegistrationKey

- ConfigurationRepositoryShare. Этот ресурс представляет Server Message Block (SMB) конечную точку общего доступа для опрашивающих серверов. Он изменяет свойство ConfigurationDownloadManages ресурса Settings.

Обладает следующими свойствами:

- ResourceRepositoryWeb. Этот ресурс представляет конечную точку IIS OData для загрузки DSC ресурсов с помощью служб IIS. Этот ресурс изменяет свойство ResourceModuleManagers ресурса Settings.

Обладает следующими свойствами:

- AllowUnSecureConnection
- ServerUrl
- CertificateID
- RegistrationID

- ResourceRepositoryShare. Этот ресурс представляет конечную точку OData IIS для загрузки ресурсов DSC с использованием общих ресурсов SMB. Этот ресурс изменяет свойство ResourceModuleManagers ресурса Settings.

Обладает следующими свойствами:

- ReportServerWeb. Этот ресурс представляет конечную точку IIS OData для предоставления данных отчётов, связанных с узлами, их текущих конфигураций и дрейфов. Этот ресурс изменяет свойство ResourceModuleManagers ресурса Settings.

Обладает следующими свойствами:

- ServerUrl
- CertificateID
- RegistrationKey
- AllowUnsecureConnection

- PartialConfiguration. Этот ресурс представляет имя конфигурации, которое должны быть получено от опрашивающего сервера. В конфигурации можно иметь несколько ресурсов PartialConfiguration. Этот ресурс изменяет свойство PartialConfigurations ресурса Settings.

Обладает следующими свойствами:

- DependsOn
- RefreshMode
- RefreshModuleSource
- Description
- ExclusiveResources
- ConfigurationSource

Ниже приводится типичная реализация конфигурации свойств Meta Configuration в LCM v2:

реализация_конфигурации_свойств_MetaConfiguration

Предыдущий сценарий похож на общую конфигурацию DSC с конфигурацией ChangeLCMProperties, но включает в себя определённый атрибут DSCLocalConfigurationManager. Этот атрибут предусматривает, что все ресурсы в конфигурации должны быть связаны только с LCM и должны присутствовать в конфигурациях, связанных с LCM.

При использовании других общих ресурсов в конфигурации возникает ошибка. Сценарий содержит один узел для сервера DemoServerWin.

Основной ресурс для установки свойств LCM - ресурс "Settings". В этом примере мы задаём некоторые его свойства и присваиваем им значения. Например, чтобы машина перезапустилась (когда это требуется ресурсом), для режима обновления - установлено значение Pull; режим конфигурации был изменён на ApplyandAutoCorrect, а ConfigurationID был предоставлен с допустимым идентификатором GUID. Представленная GUID конфигурация будет взята с опрашивающего сервера.

Есть две частичные конфигурации, которые должны быть загружены LCM и применены на своём сервере как одна конфигурация. Partial Configuration IISInstall отвечает за загрузку конфигурации с именем IISInstall из PullServer1. Partial Configuration IndexFile отвечает за загрузку конфигурации с именем IndexFile из PullServer2. Кроме того, запуск частичной конфигурации IndexFile, в лице свойства DependsOn, зависит от завершения конфигурации IISInstall. Конфигурация IndexFile может запуститься только после применения конфигурации IISInstall.

После определения конфигурации, она запускается для генерации в C:\DSC - .mof-файла (DemoServerWin.Meta.mof). Расположение папки предоставляется с помощью параметра OutputPath. После создания .mof файла, для его передачи и применения на сервере DemoServerWin используется командлет Set-DSCLocalConfigurationManager.

После применения конфигурации, LCM на сервере DemoServerWin, настроено получение частичных конфигураций с нескольких опрашивающих серверов и периодическое их применение.

Затем, используя Get-DSCLocalConfigurationManager, как показано в следующем примере, вы можете просмотреть новую конфигурацию:

PS C:\Users\me> Get-DscLocalConfigurationManager

ActionAfterReboot : ContinueConfiguration
AgentId : C8F7308B-6E6D-11E6-899F-B4AE2BEB7DE5
AllowModuleOverWrite : False
CertificateID :
ConfigurationDownloadManagers :
ConfigurationID : fcd03a8d-5a64-4982-92b3-5c89680add39
ConfigurationMode : ApplyAndAutoCorrect
ConfigurationModeFrequencyMins : 15
Credential :
DebugMode : False
DownloadManagerCustomData :
DownloadManagerName :
LCMCompatibleVersions :
LCMState : Ready
LCMVersion : 2.0
MaximumDownloadSizeMB : 500
StatusRetentionTimeInDays : 7
PartialConfigurations : RebootNodeIfNeeded : True
RefreshFrequencyMins : 30
RefreshMode : PULL
ReportManagers : [ReportServerWeb]ComplianceServer
ResourceModuleManagers : <>
PSComputerName :

В предыдущем блоке кода свойство ConfigurationDownloadManagers заполняется двумя значениями, представляющими два опрашивающих сервера: PartialConfigurations имеет два значения, представленные конфигурациями IISInstall и IndexFile, а ReportManagers имеет значение ComplianceServer.

Ещё в начале года прошёл курс по PowerShell Desired State Configuration в MVA (кстати, кто не знаком – настоятельно рекомендую Microsoft Virtual Academy – бесплатные курсы по технологиям Microsoft) и приблизительно с тех же пор хотел поделиться полученными знаниями, всё руки не доходили. И вот свершилось…

PowerShell Desired State Configuration (DSC) – настройка требуемого состояния – очень мощный инструмент, который может значительно облегчить процесс настройки системы.

Используя DSC, мы описываем как хотим, чтобы выглядела система в конечном итоге, не вдаваясь в подробности, далее происходит её автоматическая настройка в соответствии с заданными требованиями.

При использовании DSC всё упрощается – мы просто говорим, что в реестре должен быть такой-то ключ, на диске должен быть такой-то каталог, служба – отключена и .т.д., т.е. просто перечисляем требования.

Далее Powershell смотрит наши требования, и если заданные настройки совпадают с тем, что есть в системе – ничего не происходит, а если отличаются – они будут изменены согласно заданным настройкам.

Системные требования

Конфигурация DSC

Работа с DSC начинается с конфигурационного скрипта, в котором мы описываем как хотим, чтобы выглядела система. Сам по себе скрипт ничего не делает.

Требуемые настройки – (конфигурация) описываются в блоке Configuration, которому нужно задать имя. Внутри блока Configuration указываются настройки для каждого из компьютеров (если нужно настроить несколько компьютеров).

Блок конкретного компьютера начинается с ключевого слова Node. За ним идёт имя компьютера, которое может быть как постоянным, так и задаваться при помощи переменной:

Внутри блока Node прописываются настройки для компьютера, с помощью ресурсов:

Ресурсы DSC – говоря умным языком – это специализированные модули PowerShell, с помощью которых осуществляется настройка компьютеров. Если по простому – это то, что можно настроить при помощи DSC: файлы/каталоги, службы, компоненты Windows и т.д. Таких ресурсов предусмотрено 12, узнать что это за ресурсы можно при помощи командлета Get-DSCResource:

DSC - Get-Resource

Описание встроенных ресурсов можно найти в соответствующей статье.

Если чего-то вдруг не хватает – можно дописать свои.

Пишем конфигурацию

Итак, допустим для наших задач нам нужно чтобы

Вот так нежизненный пример, зато каждый сможет повторить дома, без всяких серверов и серьёзных изменений в системе.

Рассмотрим описание одного ресурса подробно (на примере каталога)…

При помощи ключа Ensure задаётся наличие или отсутствие соответствующей настройки. Он может принимать два значения:

Present – настройка должна быть включена – каталог должен присутствовать, процесс должен быть запущен и т.д. Если нет – создать, запустить и т.д. Absent – настройка должна быть выключена – каталога быть не должно, процесс не должен быть запущен и т.д. Есть есть – удалить, остановить и т.д.

Идём дальше. С файлами и каталогами работает ресурс File. По умолчанию он работает с файлами, поэтому нужно явно указать, что нам нужен каталог:

В готовом виде настройка для каталога будет выглядеть так:

Аналогичным образом пишутся настройки для других ресурсов. Узнать какие ключи доступны для каждого ресурса можно узнать всё там же.

Конфигурация в целом будет выглядеть следующим образом:

Примечание: для ресурса File обязательным является указание ключа Arguments, в котором указываются параметры процесса. Если таковых нет (как в нашем случае) – нужно указать пустую строку.

Для ресурса, отвечающего за настройку служб (Service) не предусмотрен ключ Ensure, вместо него есть ключ State, указывающий в каком состоянии должна находиться служба: запущена (Running), или остановлена (Stopped).

Конфигурация ведёт себя так же как функция: если её просто скомпилировать ничего не произойдёт. Её нужно вызвать. Для этого в конфигурационном скрипте последней строкой можно дописать имя нашей конфигурации:

Или запустить её вручную.

В результате её выполнения будет создан файл [имя_компьютера].mof (Managed Object Format). Для нашего примера это MyComputer.mof. Это текстовый файл, в котором содержатся все требования по настройке, которые будут применяться к компьютеру. (Т.е. можно сказать, что выполнив конфигурацию мы перевели требования к компьютеру с понятного нам языка, на язык MOF – Managed Object Format, но над этим можно не задумываться – просто выполнить и всё). Следует отметить, что использование MOF-файлов позволяет использовать DSC для настройки компьютеров не только под управлением Windows, но и Linux.

Примечание: перед тем, как компилировать лучше задать текущим какой-нибудь удобный путь (например тот же, где лежит конфигурационный скрипт), в таком случае .mof-файл будет помещён в каталог с названием конфигурации, по этому пути. В противном случае для успешного результата нужно запускать Powershell от имени администратора, так как по умолчанию Powershell пытается положить mof-файл в каталог %systemroot%/system32.

В результате успешного выполнения вы получите подтверждение:

DSC - MOF-File

Далее остаётся запустить выполнение самой конфигурации. Это делается при помощи командлета Start-DSCConfiguration. В качестве параметра ему нужно указать путь к каталогу, в котором лежит mof-файл:

В результате выполнения этого командлета если настройка компьютера соответствовала требованиям ничего не изменится, а если нет – настройки будет изменены согласно требованиям.

Для отслеживания соответствия компьютера заданным настройкам используется командлет Test-DSCConfiguration. Он возвращает True, если настройки совпадают, и False – если не совпадают, при этом не объясняя в чём дело. А нам и не нужно это знать – для того, чтобы вернуть конфигурацию достаточно снова выполнить командлет Start-DSCConfiguration.

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

Читайте также: