Share via


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 를 사용하여 리소스의 TestSet 메서드를 호출할 때 사용되는 매개 변수를 포함하는 해시 테이블입니다 Invoke-DscResource. 에 대한 Invoke-DscResource 첫 번째 호출은 Test 메서드를 사용하여 서비스가 실행 중인지 확인하고 Spooler 결과를 변수에 $TestResult 저장합니다.

다음 단계는 서비스가 이미 원하는 상태인지 여부에 따라 달라집니다. 를 적용하기 전에 항상 원하는 상태를 확인하고 필요한 경우에만 Set 메서드를 호출하는 것이 가장 좋습니다. 이 예제에서 스크립트는 DSC 리소스가 원하는 상태인지 여부에 대한 메시지를 콘솔에 씁니다. 그런 다음 서비스가 실행되고 있지 않으면 Set 메서드를 사용하여 를 호출 Invoke-DscResource 하여 원하는 상태를 적용합니다.