Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Windows PowerShell 4.0, Windows PowerShell 5.0
С помощью встроенного параметра DSC ConfigurationData можно определить данные, которые могут использоваться в конфигурации. Это позволяет создать единую конфигурацию, которую можно использовать для нескольких узлов или для разных сред. Например, при разработке приложения можно использовать одну конфигурацию как для среды разработки, так и для рабочей среды, а также использовать данные конфигурации для указания данных для каждой среды.
В этом разделе описывается структура хэш-таблицы ConfigurationData . Примеры использования данных конфигурации см. в разделе Разделение данных конфигурации и среды.
Общий параметр ConfigurationData
Конфигурация DSC принимает общий параметр ConfigurationData, который указывается при компиляции конфигурации. Сведения о компиляции конфигураций см. в разделе Конфигурации DSC.
Параметр ConfigurationData — это хэш-таблица, которая должна иметь хотя бы один ключ с именем AllNodes. Он также может иметь один или несколько других ключей.
Замечание
В примерах в этом разделе используется один дополнительный ключ (отличный от именованного ключа AllNodes ) с именем NonNodeData, но вы можете включить любое количество дополнительных ключей и назвать их как угодно.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
Значением ключа AllNodes является массив. Каждый элемент этого массива также является хеш-таблицей, которая должна иметь хотя бы один ключ с именем NodeName:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
Вы также можете добавить другие ключи в каждую хеш-таблицу:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
Чтобы применить свойство ко всем узлам, можно создать член массива AllNodes, который имеет значение NodeName .* Например, чтобы присвоить каждому узлу LogPath свойство, можно сделать следующее:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
Это эквивалентно добавлению свойства с именем и LogPath значением к "C:\Logs" каждому из остальных блоков (VM-1, VM-2, и VM-3).
Определение хэш-таблицы ConfigurationData
Вы можете определить ConfigurationData как переменную в том же файле скрипта, что и конфигурация (как в наших предыдущих примерах), либо в отдельном .psd1 файле. Чтобы определить ConfigurationData в файле .psd1 , создайте файл, содержащий только хэш-таблицу, представляющую данные конфигурации.
Например, можно создать файл MyData.psd1 со следующим содержимым:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
Компиляция конфигурации с конфигурационными данными
Чтобы скомпилировать конфигурацию, для которой определены конфигурационные данные, необходимо передать конфигурационные данные в качестве значения параметра ConfigurationData .
При этом будет создан MOF-файл для каждой записи в массиве AllNodes . Каждый MOF-файл будет назван в соответствии со NodeName свойством соответствующей записи массива.
Например, если вы определяете данные конфигурации, как в файле MyData.psd1 выше, компиляция конфигурации приведет к созданию обоих VM-1.mof файлов and VM-2.mof .
Компиляция конфигурации с конфигурационными данными с помощью переменной
Чтобы использовать данные конфигурации, которые определены как переменная в том же .ps1 файле, что и конфигурация, необходимо передать имя переменной в качестве значения параметра ConfigurationData при компиляции конфигурации:
MyDscConfiguration -ConfigurationData $MyData
Компиляция конфигурации с конфигурационными данными с помощью файла данных
Чтобы использовать данные конфигурации, определенные в файле .psd1, необходимо передать путь и имя этого файла в качестве значения параметра ConfigurationData при компиляции конфигурации:
MyDscConfiguration -ConfigurationData .\MyData.psd1
Использование переменных ConfigurationData в конфигурации
DSC предоставляет следующие специальные переменные, которые можно использовать в сценарии конфигурации:
- $AllNodes относится ко всей коллекции узлов, определенной в ConfigurationData. Коллекцию AllNodes можно отфильтровать с помощью . Where() и . Для Each().
- ConfigurationData относится ко всей хеш-таблице, которая передается в качестве параметра при компиляции конфигурации.
-
MyTypeName содержит имя конфигурации , в которой используется переменная. Например, в конфигурации
MyDscConfiguration, которое$MyTypeNameбудет иметь значениеMyDscConfiguration. -
Node относится к определенной записи в коллекции AllNodes после ее фильтрации с помощью . Where() или . Для Each().
- Подробнее об этих способах вы можете прочитать в about_arrays
Использование данных, не относящихся к узлам
Как мы видели в предыдущих примерах, хэш-таблица ConfigurationData может иметь один или несколько ключей в дополнение к обязательному ключу AllNodes . В примерах в этом разделе мы использовали только один дополнительный узел и назвали его NonNodeData. Тем не менее, вы можете определить любое количество дополнительных ключей и назвать их как угодно.
Пример использования данных, не относящихся к узлу, см. в разделе Разделение данных конфигурации и среды.