Share via


DSC 資源

適用於 Windows PowerShell 4.0 與更新版本。

概觀

預期狀態設定 (DSC) 資源提供 DSC 設定的建置組塊。 資源會公開可以設定的屬性 (結構描述),而且這些屬性包含本機設定管理員 (LCM) 稱之為「make it so (讓它變成這樣)」的 PowerShell 指令碼函式。

資源可以建立某些物件的模型,像檔案一樣平常或如 IIS 伺服器設定一樣專用。 類似資源的群組會併入 DSC 模組,將所有必要的檔案組織到可攜式結構中,而且包含中繼資料以識別資源的原訂用法。

每個資源都有一個*結構描述,可判斷在設定中使用資源所需的語法。 您可以透過下列方式定義資源的結構描述:

  • Schema.Mof 檔案:大部分的資源都會使用受控物件格式,在 schema.mof 檔案中定義其「結構描述」。
  • <Resource Name>.schema.psm1 檔案:複合資源會使用參數區塊,在 <ResourceName>.schema.psm1 檔案中定義其「結構描述」。
  • <Resource Name>.psm1 檔案:以類別為基礎的 DSC 資源會在類別定義中定義其「結構描述」。 語法項目會標示為 Class 屬性。 如需詳細資訊,請參閱 about_Classes

若要擷取 DSC 資源的語法,請使用 Get-DSCResource Cmdlet 加上 Syntax 參數。 此用法類似使用 Get-Command 加上 Syntax 參數,以取得 Cmdlet 語法。 您看到的輸出將顯示針對您指定之資源的資源區塊所使用的範本。

Get-DscResource -Syntax Service

雖然此資源的語法未來可能變更,但您看到的輸出應該類似下列輸出。 如同 Cmdlet 語法,方括弧中的「索引鍵」均為選擇性。 類型會指定每個索引鍵所預期的資料類型。

注意

Ensure 索引鍵是選擇性的,因為它會預設為 "Present"。

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

注意

在 7.0 版以前的 PowerShell 中,Get-DscResource 不會尋找類別型的 DSC 資源。

在設定內部,服務資源區塊可能看起來像這樣,以確保多工緩衝處理器服務正在執行。

注意

在設定中使用資源之前,您必須先使用 Import-DSCResource 來匯入該資源。

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

設定可以包含相同資源類型的多個執行個體。 每個執行個體都必須具有唯一名稱。 在下列範例中,會新增第二個服務資源區塊來設定 "DHCP" 服務。

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

注意

從 PowerShell 5.0 開始,已針對 DSC 新增 IntelliSense。 此新功能可讓您使用 TABCtr+空格鍵來自動完成機碼名稱。

使用 Tab 鍵自動完成的資源 IntelliSense

資源類型

Windows 具有內建資源,而 Linux 則具有 OS 特定資源。 有適用於 跨節點相依性、套件管理資源,以及 社群擁有和維護資源的資源。 您可以使用上述步驟來判斷這些資源的語法以及其使用方式。 提供這些資源的頁面都已封存於參考下方。

Windows 內建資源

跨節點相依性資源

套件管理資源

Linux 資源