about_DesiredStateConfiguration

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 4.0

항목

about_Desired_State_Configuration

간단한 설명

Windows PowerShell® DSC(필요한 상태 구성) 기능을 간단히 소개합니다.

자세한 설명

DSC는 Windows PowerShell의 관리 플랫폼입니다. 이 플랫폼에서 소프트웨어 서비스 및 이러한 서비스가 실행되는 환경에 대한 구성 데이터를 배포 및 관리할 수 있습니다. DSC는 소프트웨어 환경의 상태를 구성하는 방법을 선언적으로 지정하는 데 사용할 수 있는 Windows PowerShell 언어 확장, 새로운 cmdlet 및 리소스를 제공합니다.

DSC는 Windows PowerShell 4.0부터 도입되었습니다.

DSC에 대한 자세한 내용은 TechNet 라이브러리(https://go.microsoft.com/fwlink/?LinkId=311940)에서 "Windows PowerShell 필요한 상태 구성"을 참조하세요.

DSC 사용

DSC를 사용하여 환경을 구성하려면 구성 키워드, 식별자 및 블록을 구분하는 중괄호 쌍을 차례로 사용하여 Windows PowerShell 스크립트 블록을 정의합니다. 구성 블록 내에 환경의 각 노드(컴퓨터)에 대해 필요한 구성 상태를 지정하는 노드 블록을 정의할 수 있습니다. 노드 블록은 노드 키워드로 시작되고, 뒤에 대상 컴퓨터의 이름이 나옵니다. 이 이름은 변수일 수 있습니다. 컴퓨터 이름 뒤에는 노드 블록을 구분하는 중괄호가 나옵니다. 노드 블록 내에 특정 리소스를 구성하기 위한 리소스 블록을 정의할 수 있습니다. 리소스 블록은 다음 예제와 같이 리소스의 형식 이름으로 시작되고, 뒤에 해당 블록에 대해 지정하려는 식별자, 블록을 구분하는 중괄호가 차례로 나옵니다.

Configuration MyWebConfig
    {
       # Parameters are optional
       param ($MachineName, $WebsiteFilePath)

       # A Configuration block can have one or more Node blocks
       Node $MachineName
       {
          # Next, specify one or more resource blocks
          # WindowsFeature is one of the resources you can use in a Node block
          # This example ensures the Web Server (IIS) role is installed
          WindowsFeature IIS
          {
             # To ensure that the role is not installed, set Ensure to \"Absent\"
              Ensure = "Present" 
              Name = "Web-Server" # Use the Name property from Get-WindowsFeature  
          }

          # You can use the File resource to create files and folders
          # \"WebDirectory\" is the name you want to use to refer to this instance
          File WebDirectory
          {
             Ensure = "Present"  # You can also set Ensure to "Absent“
             Type = "Directory“ # Default is “File”
             Recurse = $true
             SourcePath = $WebsiteFilePath
             DestinationPath = "C:\inetpub\wwwroot"
            
             # Ensure that the IIS block is successfully run first before
             # configuring this resource
             Requires = "[WindowsFeature]IIS"  # Use Requires for dependencies     
          }
       }
    }

구성을 만들려면 Windows PowerShell 함수를 호출할 때와 같은 방식으로 Configuration 블록을 호출하고 정의했을 수 있는 모든 예상 매개 변수를 제공합니다(위의 예제에서는 2개 있음). 예를 들어 이 경우에는 다음과 같습니다.

    MyWebConfig -MachineName "TestMachine" –WebsiteFilePath "\\filesrv\WebFiles" `
         -OutputPath "C:\Windows\system32\temp" # OutputPath is optional

이렇게 하면 사용자가 지정한 경로에 각 노드에 대한 MOF 파일이 생성됩니다. 이러한 MOF 파일은 각 노드에 대해 원하는 구성을 지정합니다. 다음으로, 다음 cmdlet을 사용하여 구성 MOF 파일을 구문 분석하고, 각 노드에 해당 구성을 보내고, 해당 구성을 시행합니다.

    Start-DscConfiguration –Verbose -Wait -Path "C:\Windows\system32\temp"

DSC를 사용하여 구성 상태 유지 관리

DSC를 사용할 경우 구성은 멱등원입니다. 즉, DSC를 사용하여 동일한 구성을 두 번 이상 시행할 경우 결과 구성 상태는 항상 동일해집니다. 이 때문에 환경의 노드가 필요한 구성 상태에서 다른 상태로 이동되었을 수 있다고 의심될 경우 동일한 DSC 구성을 다시 시행하여 필요한 상태로 되돌릴 수 있습니다. 해당 상태가 필요한 상태에서 다른 상태로 이동된 리소스만 처리하도록 구성 스크립트를 수정할 필요는 없습니다.

다음 예제에서는 지정된 노드의 실제 구성 상태가 노드에서 마지막으로 시행된 DSC 구성에서 다른 상태로 이동되었는지 여부를 확인하는 방법을 보여 줍니다. 이 예제에서는 로컬 컴퓨터의 구성을 확인합니다.

    $session = New-CimSession -ComputerName "localhost"
    Test-DscConfiguration -CimSession $session 

기본 제공 DSC 리소스

DSC는 구성 스크립트에서 사용할 수 있는 기본 제공 리소스 집합인 레지스트리, 스크립트, 보관, 파일, WindowsFeature, 패키지, 환경, 그룹, 사용자, 로그, 서비스 및 WindowsProcess를 제공합니다. 위의 예제에서는 파일 및 WindowsFeature 리소스를 사용하는 방법을 보여 줍니다. 지정된 리소스에서 사용할 수 있는 모든 속성을 보려면 Windows PowerShell ISE의 구성 스크립트 내에 있는 리소스 키워드(예: 파일)에 커서를 놓고 Ctrl 키를 누른 채 스페이스바를 누릅니다.

참고 항목

"Windows PowerShell 필요한 상태 구성"

(https://go.microsoft.com/fwlink/?LinkId=311940)