Powershell

是否可以創建通用配置文件以使用 PowerShell 安裝 Windows 功能?

  • September 5, 2015

我目前正在嘗試自動建構執行 Windows Server 2012 R2 的 VM。目前的挑戰是自動添加角色和功能。在角色和功能嚮導中,有一個用於導出可在 PowerShell 中執行的 XML 配置文件的選項。

但是,在查看 XML 文件後,我可以看到它特定於執行它的伺服器 - 它包含諸如“電腦名稱”之類的欄位。

如果我想執行一個在許多 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 Desired State Configuration 概述Windows PowerShell Desired State Configuration 入門

那麼為什麼要使用它而不是簡單的 install-windowsfeature cmdlet?使用 DSC 而不是腳本的真正強大之處在於,我可以定義一個位置,我可以在其中儲存要推送到或從中提取的配置(相對於目標機器),請參閱Push and Pull Configuration Modes。配置不關心機器是物理的還是虛擬的,但我相信至少需要 2012 年才能讓伺服器啟動以拉取 DSC。

引用自:https://serverfault.com/questions/720098