Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Windows PowerShell 4.0, Windows PowerShell 5.0
Конфигурации DSC — это сценарии PowerShell, определяющие особый тип функции. Чтобы определить конфигурацию, используйте ключевое слово PowerShell Configuration.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Сохраните скрипт в виде файла .ps1.
Синтаксис конфигурации
Конфигурационный скрипт состоит из следующих частей:
-
Блок Конфигурация. Это самый внешний блок скрипта. Его можно определить с помощью ключевого слова Configuration и указать имя. В этом случае имя конфигурации —
MyDscConfiguration. - Один или несколько блоков Node . Они определяют узлы (компьютеры или виртуальные машины), которые вы настраиваете.
В приведенной выше конфигурации есть один блок Node , предназначенный для компьютера с именем
TEST-PC1. Блок Node может принимать несколько имен компьютеров. - Один или несколько ресурсных блоков. Здесь конфигурация задает свойства для ресурсов, которые она конфигурирует. В данном случае имеется два ресурсных блока, каждый из которых вызывает ресурс WindowsFeature .
Замечание
Ресурс WindowsFeature DSC доступен только на компьютерах с Windows Server. Для компьютеров с клиентской ОС, таких как Windows 11, необходимо использовать WindowsOptionalFeature . Дополнительные сведения см. в разделе "WindowsOptionalFeature" документации по PSDscResources.
В блоке Configuration можно делать все, что обычно можно делать в функции PowerShell. В предыдущем примере, если вы не хотите жестко кодировать имя целевого компьютера в конфигурации, вы можете добавить параметр для имени узла.
В этом примере имя узла указывается путем передачи его в качестве параметра ComputerName при компиляции конфигурации. Имя устанавливается по умолчанию localhost.
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Блок Node также может принимать несколько имен компьютеров. В приведенном выше примере вы можете либо использовать -ComputerName параметр, либо передать список компьютеров через запятую непосредственно в блок Node .
MyDscConfiguration -ComputerName "localhost", "Server01"
При указании списка компьютеров в блоке Node из Конфигурации необходимо использовать массивную нотацию.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Компиляция конфигурации
Прежде чем приступить к реализации конфигурации, необходимо скомпилировать ее в документ MOF. Это можно сделать, вызвав конфигурацию так же, как вы вызываете функцию PowerShell. Последняя строка примера, содержащая только имя конфигурации, вызывает конфигурацию.
Замечание
Чтобы вызвать конфигурацию, функция должна находиться в глобальной области видимости (как и любая другая функция PowerShell). Вы можете сделать это либо с помощью "dot-sourcing" скрипта, либо запустив сценарий конфигурации с помощью F5 или нажав кнопку "Run Script " в интегрированной среде сценариев. Чтобы создать исходный код по точке, выполните команду . .\myConfig.ps1 , в которой myConfig.ps1 указано имя файла скрипта, содержащего вашу конфигурацию.
Когда вы вызываете конфигурацию, она:
- Разрешает все переменные
- Создает папку в текущем каталоге с именем, совпадающим с именем конфигурации.
- Создает файл с именем NodeName.mof в новом каталоге, где NodeName — это имя целевого узла конфигурации. Если узлов несколько, для каждого узла будет создан файл MOF.
Замечание
Файл MOF содержит всю информацию о конфигурации для целевого узла. Из-за этого важно обеспечить безопасность. Дополнительные сведения см. в разделе Защита MOF-файла.
Компиляция первой конфигурации, приведенной выше, приводит к следующей структуре папок:
. .\MyDscConfiguration.ps1
MyDscConfiguration
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 localhost.mof
Если конфигурация принимает параметр, как во втором примере, он должен быть предоставлен во время компиляции. Вот как это будет выглядеть:
. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 10/23/2015 4:32 PM 2842 MyTestNode.mof
Использование новых ресурсов в Вашей конфигурации
Если вы выполнили предыдущие примеры, возможно, вы заметили, что вы предупредили, что вы использовали ресурс без явного импорта. На сегодняшний день DSC поставляется с 12 ресурсами в составе модуля PSDesiredStateConfiguration.
Командлет Get-DscResource можно использовать для определения того, какие ресурсы установлены в системе и доступны для использования LCM.
После того как эти модули были размещены $env:PSModulePath и правильно распознаны Get-DscResource, их все еще необходимо загрузить в вашу конфигурацию.
Import-DscResource — это динамическое ключевое слово, которое можно распознать только в блоке конфигурации , а не в командлете. Import-DscResource поддерживает два параметра:
- ModuleName — это рекомендуемый способ использования Import-DscResource. Он принимает имя модуля, содержащего импортируемые ресурсы (а также строковый массив имен модулей).
- имя — это имя ресурса для импорта. Это не понятное имя, возвращаемое как "Name" с помощью Get-DscResource, а имя класса, используемое при определении схемы ресурсов (возвращаемое как ResourceType с помощью Get-DscResource).
Дополнительные сведения об использовании Import-DSCResourceсм. в using Import-DSCResource
Различия PowerShell v4 и v5
Существуют различия в том, где должны храниться ресурсы DSC в PowerShell 4.0. Дополнительные сведения см. в разделе Расположение ресурса.