Ресурсы DSC
Общие сведения
Ресурсы DSC предоставляют стандартизированный интерфейс для управления параметрами системы. Ресурс DSC определяет свойства, которыми можно управлять, и содержит код PowerShell, который Invoke-DscResource
вызывает метод "сделать это так".
Ресурс DSC может моделировать что-то общее, например файл, или как конкретный параметр сервера IIS. Группы связанных ресурсов DSC объединяются в модули PowerShell. Модули предоставляют переносимый пакет с версиями для ресурсов DSC и включают метаданные и документацию по ним.
Каждый ресурс DSC имеет схему, которая определяет синтаксис, необходимый для использования ресурса DSC с Invoke-DscResource
или в конфигурации. Схема ресурса DSC определяется следующими способами.
<Resource Name>.psm1
file: ресурсы DSC на основе классов определяют свою схему в определении класса. Элементы синтаксиса обозначаются как свойства класса. Дополнительные сведения см. в статье About Classes and Desired State Configuration (О классах и настройке требуемого состояния).Schema.Mof
file: ресурсы DSC на основе MOF определяют свою схему в файле с помощью формата управляемогоschema.mof
объекта.
Чтобы получить синтаксис для ресурса DSC, используйте командлет Get-DSCResource с параметром Syntax . Это похоже на использование Командлета Get-Command с параметром Синтаксис для получения синтаксиса командлета. В выходных данных показан шаблон, используемый для блока ресурсов DSC в конфигурации DSC.
Get-DscResource -Syntax Service
Service [String] #ResourceName
{
Name = [string]
[BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
[Credential = [PSCredential]]
[Dependencies = [string[]]]
[DependsOn = [string[]]]
[Description = [string]]
[DesktopInteract = [bool]]
[DisplayName = [string]]
[Ensure = [string]{ Absent | Present }]
[Path = [string]]
[PsDscRunAsCredential = [PSCredential]]
[StartupTimeout = [UInt32]]
[StartupType = [string]{ Automatic | Disabled | Manual }]
[State = [string]{ Ignore | Running | Stopped }]
[TerminateTimeout = [UInt32]]
}
Как и синтаксис командлета, ключи в квадратных скобках являются необязательными. Типы указывают тип данных, который ожидает каждый ключ.
Чтобы убедиться, что Spooler
служба запущена, выполните следующие действия:
$SharedDscParameters = @{
Name = 'Service'
ModuleName = 'PSDscResources'
Property = @{
Name = 'Spooler'
State = 'Running'
}
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
Invoke-DscResource -Method Set @SharedDscParameters
}
Переменная $SharedDscParameters
представляет собой хэш-таблицу, содержащую параметры, используемые при вызове методов Test и Set ресурса с Invoke-DscResource
. Первый вызов использует Invoke-DscResource
метод Test , чтобы проверить, запущена ли Spooler
служба, и сохраняет результат в переменной $TestResult
.
Следующий шаг зависит от того, находится ли служба в нужном состоянии. Рекомендуется всегда проверять требуемое состояние перед применением и вызывать метод Set только при необходимости. В этом примере скрипт записывает в консоль сообщение о том, находится ли ресурс DSC в нужном состоянии. Затем, если служба не запущена, она вызывает Invoke-DscResource
с помощью метода Set для принудительного применения требуемого состояния.