Powershell
是否可以創建通用配置文件以使用 PowerShell 安裝 Windows 功能?
我目前正在嘗試自動建構執行 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。