DSC 리소스
개요
DSC 리소스는 시스템 설정을 관리하기 위한 표준화된 인터페이스를 제공합니다. DSC 리소스는 관리할 수 있는 속성을 정의하고 "만들기"를 호출하는 Invoke-DscResource
PowerShell 코드를 포함합니다.
DSC 리소스는 파일처럼 제네릭 또는 IIS 서버 설정과 같은 특정 항목을 모델링할 수 있습니다. 관련 DSC 리소스 그룹은 PowerShell 모듈에 결합됩니다. 모듈은 DSC 리소스에 대해 이식 가능한 버전이 지정된 패키지를 제공하고 이에 대한 메타데이터 및 설명서를 포함합니다.
모든 DSC 리소스에는 구성에서 또는 와 함께 Invoke-DscResource
DSC 리소스를 사용하는 데 필요한 구문을 결정하는 스키마가 있습니다. DSC 리소스의 스키마는 다음과 같은 방법으로 정의됩니다.
<Resource Name>.psm1
file: 클래스 기반 DSC 리소스는 클래스 정의에서 해당 스키마를 정의합니다. 구문 항목은 클래스 속성으로 표시됩니다. 자세한 내용은 about_Classes를 참조하세요.Schema.Mof
파일: MOF 기반 DSC 리소스는 관리되는 개체 형식을schema.mof
사용하여 파일에서 해당 스키마를 정의합니다.
DSC 리소스에 대한 구문을 검색하려면 구문 매개 변수와 함께 Get-DSCResource cmdlet을 사용합니다. 이는 Get-Command 를 구문 매개 변수와 함께 사용하여 cmdlet 구문을 가져오는 것과 같습니다. 출력에는 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]]
}
cmdlet 구문과 마찬가지로 대괄호 안에 있는 키 는 선택 사항입니다. 형식은 각 키에 필요한 데이터 형식을 지정합니다.
서비스가 실행 중인지 확인하려면 다음을 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 리소스가 원하는 상태인지 여부에 대한 메시지를 콘솔에 씁니다. 그런 다음 서비스가 실행되고 있지 않으면 Set 메서드를 사용하여 를 호출 Invoke-DscResource
하여 원하는 상태를 적용합니다.