PowerShell을 사용하여 Windows 기능을 설치하기위한 일반화 된 구성 파일을 작성할 수 있습니까? 옵션이 있습니다. 그러나 XML 파일을

현재 Windows Server 2012 R2를 실행하는 VM 빌드를 자동화하려고합니다. 현재 과제는 역할 및 기능 추가를 자동화하는 것입니다. 역할 및 기능 마법사에는 PowerShell에서 실행할 수있는 XML 구성 파일을 내보내는 옵션이 있습니다.

그러나 XML 파일을 살펴본 후에는 파일이 실행중인 서버에 따라 다르며 “ComputerName”과 같은 필드가 포함되어 있음을 알 수 있습니다.

많은 VM에 역할과 기능을 설치하는 스크립트를 실행하려면 어떻게합니까? 특정 컴퓨터에 맞게 개인화되지 않은 일반화 된 구성 파일이 필요합니다.

누구 든지이 문제에 대한 의견이 있습니까?



답변

예, Linux 및 Windows 모두 다음을 수행 할 수있는 원하는 상태 구성 파일을 빌드 할 수 있습니다.

  • 서버 역할 및 기능 활성화 또는 비활성화
  • 레지스트리 설정 관리
  • 파일 및 디렉토리 관리
  • 프로세스 및 서비스 시작, 중지 및 관리
  • 그룹 및 사용자 계정 관리
  • 새로운 소프트웨어 배포
  • 환경 변수 관리
  • Windows PowerShell 스크립트 실행
  • 원하는 상태에서 벗어난 구성 수정
  • 주어진 노드에서 실제 구성 상태를 발견하십시오.

다음은 IIS를 활성화하고 웹 사이트 파일이 올바른 폴더에 있는지 확인하고 이러한 파일이 설치 또는 누락되지 않은 경우이를 적절하게 설치 또는 복사하는 샘플 구성 파일입니다 ($ websitefilepath는 다음과 같습니다. 웹 사이트 파일의 소스로 사전 정의 됨) :

    Configuration MyWebConfig
    {
       # A Configuration block can have zero or more Node blocks
       Node "Myservername"
       {
          # Next, specify one or more resource blocks

          # WindowsFeature is one of the built-in resources you can use in a Node block
          # This example ensures the Web Server (IIS) role is installed
          WindowsFeature MyRoleExample
          {
              Ensure = "Present" # To uninstall the role, set Ensure to "Absent"
              Name = "Web-Server"
          }

          # File is a built-in resource you can use to manage files and directories
          # This example ensures files from the source directory are present in the destination directory
          File MyFileExample
          {
             Ensure = "Present"  # You can also set Ensure to "Absent"
             Type = "Directory“ # Default is “File”
             Recurse = $true
             # This is a path that has web files
             SourcePath = $WebsiteFilePath
             # The path where we want to ensure the web files are present
             DestinationPath = "C:\inetpub\wwwroot"
   # This ensures that MyRoleExample completes successfully before this block runs
            DependsOn = "[WindowsFeature]MyRoleExample"
          }
       }
    }

자세한 내용은 Windows PowerShell 원하는 상태 구성 개요Windows PowerShell 원하는 상태 구성 시작을 참조하십시오 .

그렇다면 단순히 install-windowsfeature cmdlet 대신 이것을 사용하는 이유는 무엇입니까? 스크립트 대신 DSC를 사용하는 진정한 장점은 대상 시스템에 대해 푸시 또는 풀 구성을 저장할 수있는 위치를 정의 할 수 있다는 것입니다 ( 푸시 및 풀 구성 모드 참조) . 구성은 머신이 물리적인지 가상인지 상관하지 않지만 DSC를 가져 오기 위해 서버를 부팅하려면 최소한 2012 년이 필요하다고 생각합니다.


답변

PowerShell에서 모든 것을 할 수 있습니다

Get-WindowsFeature | ? { $_.Installed } | Export-Clixml .\installed.xml

새 서버가 액세스 할 수있는 xml을 복사해야합니다.

Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature

답변

Import-Module servermanager
Install-WindowsFeature Feature,
    Feature,
    Feature,
    etc

위의 기능 목록이 설치됩니다. 하드 코딩하거나 한 줄에 하나씩 파일에 저장 한 다음이를 사용하여 설치할 수 있습니다.

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features