共用方式為


about_DesiredStateConfiguration

簡短描述

提供 PowerShell Desired State Configuration (DSC) 功能的簡介。

詳細描述

DSC 是 PowerShell 中的管理平臺,可讓您部署和管理軟體服務的設定數據,以及管理這些服務執行的環境。

DSC 提供一組 PowerShell 語言延伸模組、新的 Cmdlet 和資源,可用來以宣告方式指定您要如何設定軟體環境的狀態。 它也提供方法來維護和管理現有的設定。

DSC 是在 PowerShell 4.0 中引進。

如需 DSC 的詳細資訊,請參閱 TechNet Library 中的 PowerShell Desired State Configuration 概觀

使用類別開發 DSC 資源

從 PowerShell 5.0 開始,您可以使用類別來開發 DSC 資源。 如需詳細資訊,請參閱 about_Classes,以及使用 Microsoft TechNet 上的 PowerShell 類別撰寫自定義 DSC 資源

使用 DSC

若要使用 DSC 來設定環境,請先使用 Configuration 關鍵詞定義 PowerShell 腳本區塊,後面接著標識符,後面接著以大括弧分隔區塊的配對。 在組態區塊內,您可以定義節點區塊,以指定環境中每一個節點 (計算機) 所需的設定狀態。 節點區塊開頭為 Node 關鍵詞,後面接著目標計算機的名稱,可以是變數。 在計算機名稱之後,請以大括弧分隔節點區塊。 在節點區塊內,您可以定義資源區塊來設定特定資源。 資源區塊的開頭是資源的型別名稱,後面接著您要為該區塊指定的標識符,後面接著分隔區塊的大括弧,如下列範例所示。

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
            DependsOn = "[WindowsFeature]IIS"  # Use for dependencies
        }
    }
}

若要建立組態,請以叫用PowerShell函式的相同方式叫用 Configuration 區塊,並傳入您在上述範例中定義的任何預期參數, (兩個) 。 例如,在此情況下:

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

這會在您指定的路徑上為每個節點產生MOF檔案。 這些MOF檔案會指定每個節點所需的組態。 接下來,使用下列 Cmdlet 來剖析組態MOF檔案、傳送每個節點其對應的組態,並制定這些設定。 請注意,您不需要為類別型 DSC 資源建立個別的 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 資源

您可以在群組態文稿中使用下列內建資源:

名稱 屬性
檔案 {DestinationPath, 屬性, 總和檢查碼, 內容...}
封存 {目的地,路徑,總和檢查碼,認證...}
環境 {Name, DependsOn, Ensure, Path...}
分組 {GroupName, Credential, DependsOn, Description...}
記錄 {Message、DependsOn、PsDscRunAsCredential}
套件 {Name, Path, ProductId, Arguments...}
登錄 {Key、ValueName、DependsOn、Ensure...}
指令碼 {GetScript, SetScript, TestScript, Credential...}
服務 {Name, BuiltInAccount, Credential, Dependencies...}
使用者 {UserName, DependsOn, Description, Disabled...}
WaitForAll {NodeName、ResourceName、DependsOn、PsDscRunAsC...}
WaitForAny {NodeName、ResourceName、DependsOn、PsDscRunAsC...}
WaitForSome {NodeCount、NodeName、ResourceName、DependsOn...}
WindowsFeature {Name, Credential, DependsOn, Ensure...}
WindowsOptionalFeature {Name, DependsOn, Ensure, LogLevel...}
WindowsProcess {Arguments, Path, Credential, DependsOn...}

若要取得系統上可用的 DSC 資源清單,請執行 Get-DscResource Cmdlet。

本主題中的範例示範如何使用 File 和 WindowsFeature 資源。 若要查看可與資源搭配使用的所有屬性,請在 resource 關鍵詞中插入游標 (,例如,PowerShell ISE 中組態腳本內的 File) 、按住 CTRL,然後按空格鍵。

尋找更多資源

您可以下載、安裝及瞭解PowerShell和 DSC 使用者社群和 Microsoft 所建立的其他許多可用 DSC 資源。 請流覽 PowerShell 資源庫,流覽並瞭解可用的 DSC 資源。

另請參閱

PowerShell Desired State Configuration 概觀

內建 PowerShell Desired State Configuration 資源

建置自定義PowerShell Desired State Configuration資源