Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Import-DSCResource — это динамическое ключевое слово, которое можно использовать только внутри блока сценария конфигурации для импорта любых ресурсов, необходимых в вашей конфигурации. Ресурсы в разделе $PSHOME импортируются автоматически, но по-прежнему рекомендуется явно импортировать все ресурсы, используемые в конфигурации.
Синтаксис для этого Import-DSCResource показан ниже. При указании модулей по именам необходимо перечислить каждый из них в новой строке.
Import-DscResource [-Name <ResourceName(s)>] [-ModuleName <ModuleName>] [-ModuleVersion <ModuleVersion>]
Параметры
-
-Name- Имена ресурсов DSC, которые необходимо импортировать. Если указано имя модуля, команда выполняет поиск этих ресурсов DSC в этом модуле; в противном случае команда выполняет поиск ресурсов DSC во всех путях к ресурсам DSC. Поддерживаются подстановочные знаки. -
-ModuleName- Имя модуля или спецификация модуля. Если вы укажете ресурсы для импорта из модуля, команда попытается импортировать только эти ресурсы. Если указать только модуль, команда импортирует все ресурсы DSC в модуле. -
-ModuleVersion- Начиная с PowerShell 5.0, вы можете указать, какую версию модуля должна использовать конфигурация. Дополнительные сведения см. в разделе Импорт определенной версии установленного ресурса.
Import-DscResource -ModuleName xActiveDirectory
Пример: использование Import-DSCResource в конфигурации
Configuration MSDSCConfiguration
{
# Search for and imports Service, File, and Registry from the module PSDesiredStateConfiguration.
Import-DSCResource -ModuleName PSDesiredStateConfiguration -Name Service, File, Registry
# Search for and import Resource1 from the module that defines it.
# If only –Name parameter is used then resources can belong to different PowerShell modules as well.
# TimeZone resource is from the ComputerManagementDSC module which is not installed by default.
# As a best practice, list each requirement on a different line if possible. This makes reviewing
# multiple changes in source control a bit easier.
Import-DSCResource -Name File
Import-DSCResource -Name TimeZone
# Search for and import all DSC resources inside the module PSDesiredStateConfiguration.
# When specifying the modulename parameter, it is a requirement to list each on a new line.
Import-DSCResource -ModuleName PSDesiredStateConfiguration
# In PowerShell 5.0 and later, you can specify a ModuleVersion parameter
Import-DSCResource -ModuleName ComputerManagementDsc -ModuleVersion 6.0.0.0
...
Замечание
Указание нескольких значений для имен ресурсов и имен модулей в одной команде не поддерживается. Он может иметь недетерминированное поведение в отношении того, какой ресурс загружать из какого модуля, если один и тот же ресурс существует в нескольких модулях. Приведенная ниже команда приведет к ошибке во время компиляции.
Import-DscResource -Name UserConfigProvider*,TestLogger1 -ModuleName UserConfigProv,PsModuleForTestLogger
Что следует учитывать при использовании только параметра Name:
- Это ресурсоемкая операция, зависящая от количества установленных на машине модулей.
- Он загрузит первый найденный ресурс с заданным именем. В случае, если установлено более одного ресурса с одинаковым именем, он может загрузить не тот ресурс.
Рекомендуется указывать –ModuleName с помощью параметра -Name , как описано ниже.
Такое использование имеет следующие преимущества:
- Это снижает влияние на производительность за счет ограничения области поиска для указанного ресурса.
- Он явно определяет модуль, определяющий ресурс, гарантируя, что будет загружен правильный ресурс.
Замечание
В PowerShell 5.0 ресурсы DSC могут иметь несколько версий, а версии могут быть установлены на компьютере параллельно. Это реализуется путем наличия нескольких версий модуля ресурсов, содержащихся в одной папке модуля. Дополнительные сведения см. в разделе Использование ресурсов с несколькими версиями.
Intellisense с Import-DSCResource
При создании конфигурации DSC в интегрированной среде сценариев PowerShell предоставляет IntelliSense для ресурсов и свойств ресурсов. Определения ресурсов в $pshome пути к модулю загружаются автоматически.
При импорте ресурсов с помощью Import-DSCResource ключевого слова добавляются указанные определения ресурсов, а Intellisense расширяется за счет включения схемы импортируемого ресурса.
Замечание
Начиная с PowerShell 5.0, в интегрированную среду сценариев добавлено заполнение вкладок для ресурсов DSC и их свойств. Дополнительные сведения см. в статье о ресурсах DSC.
При компиляции конфигурации PowerShell использует импортированные определения ресурсов для проверки всех блоков ресурсов в конфигурации. Каждый блок ресурса проверяется на соответствие следующим правилам с использованием определения схемы ресурса.
- Используются только свойства, определенные в схеме.
- Типы данных для каждого свойства правильные.
- Свойства ключей указываются.
- Свойство, доступное только для чтения, не используется.
- Валидация на типах карт значений.
Рассмотрим следующую конфигурацию:
Configuration SchemaValidationInCorrectEnumValue
{
# It is best practice to explicitly import all resources used in your Configuration.
# This includes resources that are imported automatically, like WindowsFeature.
Import-DSCResource -Name WindowsFeature
Node localhost
{
WindowsFeature ROLE1
{
Name = "Telnet-Client"
Ensure = "Invalid"
}
}
}
Компиляция этой конфигурации приводит к ошибке.
PSDesiredStateConfiguration\WindowsFeature: At least one of the values 'Invalid' is not supported or
valid for property 'Ensure' on class 'WindowsFeature'. Please specify only supported values:
Present, Absent.
IntelliSense и проверка схемы позволяют отлавливать больше ошибок во время синтаксического анализа и компиляции, избегая сложностей во время выполнения.
Замечание
Каждый ресурс DSC может иметь имя и FriendlyName , определенный схемой ресурса. Ниже приведены первые две строки "MSFT_ServiceResource.shema.mof".
[ClassVersion("1.0.0"),FriendlyName("Service")]
class MSFT_ServiceResource : OMI_BaseResource
При использовании этого ресурса в Конфигурации вы можете указать MSFT_ServiceResource или Сервис.
Различия PowerShell v4 и v5
Существует множество различий, которые вы видите при создании конфигураций в PowerShell 4.0 и PowerShell 5.0 и более поздних версиях. В этом разделе будут выделены различия, которые вы видите в этой статье.
Несколько версий ресурсов
Установка и параллельное использование нескольких версий ресурсов не поддерживалось в PowerShell 4.0. Если вы заметили проблемы с импортом ресурсов в конфигурацию, убедитесь, что у вас установлена только одна версия ресурса.
На изображении ниже установлены две версии модуля xPSDesiredStateConfiguration .
Скопируйте содержимое нужной версии модуля на верхний уровень каталога модулей.
Расположение ресурса
При создании и компиляции конфигураций ваши ресурсы могут храниться в любом каталоге, указанном в вашем PSModulePath.
В PowerShell 4.0 LCM требует, чтобы все модули ресурсов DSC хранились в папке "Program Files\WindowsPowerShell\Modules" или $pshome\Modules. Начиная с PowerShell 5.0, это требование было удалено, и модули ресурсов могут храниться в любом каталоге, указанном в PSModulePath.
Добавлен ModuleVersion
Начиная с PowerShell 5.0, этот -ModuleVersion параметр позволяет указать, какую версию модуля следует использовать в конфигурации.