本文章是由機器翻譯。

Windows PowerShell

創作理想狀態配置自訂資源

Ritesh Modi

所需狀態配置 (DSC) 是一個新的建構管理和部署平臺從微軟。它建立在共同資訊模型 (CIM),管理 (WSMAN) 的行業標準的 Web 服務,並且是對 Windows PowerShell 的擴展。

您可以以聲明方式編寫在任何 Windows PowerShell 主控台內的 DSC 腳本生成 DSC 物件,在目標伺服器上執行它們。DSC 允許您配置、 監測和確保使用這些設定檔的伺服器的符合性。

配置寫就像定義策略為目標伺服器。該策略中包含一組資源及其所需的狀態,並且那些應用於目標伺服器。DSC 可確保每個伺服器遵循的策略。瞭解更多在 DSC bit.ly/1iDeRcF

資源是基本的構造塊的 DSC。他們是 DSC 基礎結構最顆粒的可分配、 可重複使用、 可共用的元件。他們還提供最低級別的控制內 DSC 和用於創作 DSC 檔配置基礎結構。DSC 資源可以執行任何可能使用 Windows PowerShell,如配置和管理 IIS,Windows 遠端系統管理 (WinRM)、 註冊表、 Windows 功能和服務。

什麼好這幾天是一種技術,如果它不允許延長?DSC 遵循開閉原則。它是對擴展開放,但對變更封閉。它為創作新的資源提供了必要的延伸,掛鉤。

在這篇文章,我將展示你如何開發 DSC 自訂資源和在 DSC 配置示例中使用它。自訂資源被命名為 TrustedHosts。此資源將管理 WinRM 受信任的主機配置 — — 添加或刪除到 WinRM TrustedHosts 屬性的電腦名稱稱。

想要使用 Windows PowerShell 遠端處理通信的工作組伺服器 (不是任何域的一部分) 將需要額外的 WinRM 配置。具體來說,我將添加 WinRM TrustedHosts 清單,以允許從那些機器的遠端處理的用戶端電腦的名稱。

此資源將負責管理 TrustedHosts 清單中的單個電腦名稱稱。但是,如果您需要多個電腦名稱稱,您可以添加使用此資源配置文檔中的多個資源部分。您還可以修改伴隨著的資源。

您可以通過執行 Get 專案命令和使用 WSMAN 提供程式查看受信任的主機配置:

Get-Item WSMan:\localhost\client\TrustedHosts

同樣,您可以通過執行以下命令通過 Windows PowerShell 主控台修改 TrustedHosts 屬性:

Set-Item WSMan:\localhost\client\TrustedHosts –Value "*.contoso.com" –force

它是重要的是知道的構建基塊和構建自訂的資源所需的概念。與有關的 CIM、 管理物件格式 (MOF)、 Windows PowerShell 和它的模組概念和 WinRM 是賴以建立了 DSC 資源的主要技術。

DSC 資源

在進入之前執行自訂的資源,它是重要的是知道如何打包和部署您的伺服器上。DSC 資源都包含在 Windows PowerShell 模組,讓你重新使用和分發的代碼。你無論是作為 Windows PowerShell 腳本可執行模組或已編譯二進位檔案使用語言如 C#)。

DSC 使用模組基礎設施來承載其資源。Windows PowerShell 模組應駐留在檔案系統上的預先確定的資料夾位置。你可以通過取消 Windows PowerShell 變數 $env 來查看這些地點: ModulePath 從任何 Windows PowerShell 主控台。Windows PowerShell 安裝所有的預置模組在 C:\Windows\System32\Windows­PowerShell\v1.0\modules。您應部署在 C:\Program Files\WindowsPowerShell\modules 的所有自訂模組。為信任­承載自訂的資源,用作 C:\Program Files\WindowsPowerShell\Modules 的 WinRM Windows PowerShell 模組模組基路徑和宿主的容器。您將創建一個新的資料夾,在該資料夾中命名 WinRM。

DSC 預計資源,以遵循有關 Windows PowerShell 模組內的檔和資料夾結構的規則。所有的 DSC 資源應放在模組中的 DSCResources 資料夾中。這是根資料夾包含所有相關的資源。在 WinRM 資料夾中,創建名為 DSCResources 的另一個資料夾。此資料夾中承載 DSC 的所有資源。創建一個資料夾,該資料夾中的每個資源。在這種情況下,您要創建單個資源,因此,只是一個資料夾命名為 TrustedHosts。資料夾和資源應具有相同的名稱。此特定于資源資料夾 TrustedHosts 包含特定于資源的檔。TrustedHosts 資源的資料夾結構顯示在圖 1

Windows PowerShell 所需狀態配置資源資料夾和檔規範
圖 1 Windows PowerShell 所需狀態配置資源資料夾和檔規範

定義,並提供資源執行的檔是:

  1. << 資源名稱 >>.psm1 — — 這是一個資源實現檔。在這種情況下,它是 TrustedHosts.psm1。
  2. << 資源名稱 >>.psd1 — — 這是資源的元資料檔案。在這種情況下,它是 TrustedHosts.psd1。如果您從.psm1 指令檔匯出強制性功能,不需要此檔。
  3. << 資源名稱 >>。Schema.mof—This 是資源定義。在這種情況下,它是 TrustedHosts.Schema.mof。

每個 Windows PowerShell 模組都有一個清單檔與模組本身的名稱相同的模組。生成模組的清單檔,使用新 ModuleManifest Cmdlet 從 Windows PowerShell 主控台使用較高的權限,如下所示:

New-ModuleManifest -Path "C:\Program Files\WindowsPowerShell\Modules\WinRM\WinRM.psd1"

現在,你瞭解的資料夾和檔結構規則的包裝 DSC 資源,我將重點放在實現檔上。

TrustedHosts.Schema.mof

您將使用 MOF 檔案定義 CIM/WMI 使用來生成它們,使管理資訊交換在資料中心內的實例的類。MOF 類定義其屬性的 DSC 資源。屬性可以包括讀寫、 唯讀和必需的屬性。總是應該為 CIM/WMI 來唯一地標識物件的鍵屬性。屬性分配值,它們最終會變成要監測和維護的資源所需的狀態。您可以生成 MOF 檔案通過 MOF 設計器或作者他們通過任何文字編輯器 (如記事本,因為它們本質上是文字檔。

在創建之前的 MOF 類,分析您需要在任何一台機器上的 TrustedHosts 建構管理的資訊。用於管理伺服器上的 TrustedHosts,您需要三個屬性:電腦名稱添加到 TrustedHosts 清單 ; 確保屬性,以確定是否 ComputerName 應該添加或刪除 ; 和憑據來訪問和管理 WinRM TrustedHosts 配置。

然後對 TrustedHosts DSC 資源 MOF 類被創建,如下所示:

[ClassVersion ("1.0.0"), FriendlyName ("TrustedHosts")]
Class TrustedHosts: OMI_BaseResource
{
  [Key, Description ("Name of the host")] String ComputerName;
  [Write, ValueMap {"Present", "Absent"}, 
    Values {"Present", "Absent"}] string Ensure;
  [Write, EmbeddedInstance ("MSFT_Credential")] string Credential;
};

它是重要的是知道如何 MOF 類融入整個 CIM 生態系統。DSC 的所有資源都是從 OMI_BaseResource 抽象 CIM 類都派生的。此基類定義在 root\Microsoft\Windows\DesiredStateConfiguration 命名空間,並提供所需的 DSC 的所有資源的共同屬性。

這些屬性是 ResourceID、 SourceInfo、 ModuleName、 ModuleVersion 和恒大。MOF 檔案在生成期間,會將這些屬性添加到資源的所有屬性。這些是特定于 DSC 的內部屬性,只由 DSC 使用。類 TrustedHosts 也將成為 root\Microsoft\Windows\DesiredStateConfiguration 命名空間的一部分。所有三個屬性是字串類型,它們代表了 WinRM TrustedHosts 資源定義。

電腦名稱屬性具有額外的中繼資料 — — 關鍵和描述。金鑰類型限定詞,指示此屬性是強制性,此屬性的值應該是唯一的所有實例。應該有至少一個具有內 MOF 類關鍵中繼資料屬性。可關鍵中繼資料的多個屬性。這將創建一個複合鍵,他們應該都是唯一的所有實例。我做此屬性作為鍵,因為否則,我不能確定 TrustedHosts 清單中是否已存在的電腦名稱稱。

描述提供給屬性的文本意義。與出現對確保屬性進行批註。出現是一組值的屬性可以接受,是一個枚舉的同義字。在這種情況下,確保可以接受"存在"或"無"作為其法律價值。確保和憑據屬性都裝飾著寫屬性。這意味著你可以寫進,並在配置腳本中使用自訂資源時修改此屬性。

類 TrustedHosts 還具有中繼資料 — — ClassVersion 和 FriendlyName。類版本,有利於保持相同的 MOF 類的多個版本。FriendlyName 是重要的中繼資料,因為配置腳本使用它來引用資源。配置腳本識別資源通過他們的易記名稱。在 TrustedHosts 類中,類名稱和易記名稱是相同的。你可以閱讀更多關於 MOF 檔案定義和及其中繼資料在 bit.ly/1AEHLTj

後定義的 MOF 類,堅持以 ascii 格式或 Unicode 格式檔案名內 TrustedHostsfolder TrustedHosts.Schema.mof 在檔案系統上的創建早些時候。當你在 DSC 配置中使用此自訂的資源時,您會將值分配給這些屬性,以指示所需的配置狀態。

TrustedHosts.psm1

現在我將介紹最關鍵的一個自訂的 DSC 資源 — — 資源模組腳本。這包含自訂資源實現,並且確定它將如何工作。它還通過保持它符合預期的建構管理的資源。每個 DSC 資源腳本模組必須實現三個功能。這些是強制的每個函數具有規則及其執行。

Get-TargetResource:此函數必須聲明並接受 MOF 類中的所有屬性都標記為關鍵作為參數。它也可以接受所需,並寫入屬性作為參數。鍵和所需的參數應申報參數時作為強制性標記。

Get TargetResource 函數應執行腳本來檢索資源使用 Key 屬性值的目前狀態。它應該返回一個雜湊表,包含所有屬性與值的 MOF 類中定義為資源的目前狀態。

集 TargetResource: 此函數必須聲明並接受 MOF 類中的所有屬性標記為鍵,所需和寫入屬性作為參數。鍵和所需的參數應申報參數時作為強制性標記。集 TargetResource 函數應執行腳本應使用所有資源的屬性值提供參數,以獲得資源實例,並執行以下操作之一操作:

  • 創建一個新的資源實例。
  • 更新現有資源實例。
  • 刪除現有的資源實例。

集 TargetResource 函數不返回任何值。

TargetResource 測試: 測試 TargetResource 功能類似于一套 TargetResource 的功能,但它不會返回當前資源狀態。相反,它將返回 true 或 false 取決於當前資源狀態是否符合預期的資源狀態配置腳本中所指定的布林值。如果有兩個國家之間的完全符合,此函數返回 true。它將返回 false 如果在任何鍵上不匹配的要求,或寫入屬性。

這三項功能由 DSC 的本地組態管理員 (LCM) 元件調用。液晶顯示模組是在所有運行 Windows 管理框架 4.0 的電腦上運行的代理。LCM 看作是 DSC 用戶端在網路中的所有伺服器上可用。DSC 可與此用戶端進行通信,並提供必要的配置資訊。它是 LCM (DSC 用戶端) 以管理、 監測和確保在目的電腦上的配置符合要求的責任。要做它的工作,它會調用 DSC 資源功能。它首先調用測試 TargetResource 函數,以確定是否資源配置匹配預期的配置。如果返回的值為 true,這意味著資源的目前狀態是預期的配置相同。然而,它應該返回如果狀態不匹配,則為 false。

如果 LCM 獲取假作為傳回值,它將調用設置 TargetResource,將執行以下操作:

  1. 如果該資源不存在,並且確保屬性設置為當前,它將創建新實例的資源和屬性賦值,因此,它從配置腳本中獲取。
  2. 如果存在相應的資源並確保屬性設置為當前,但一些其屬性值不匹配的屬性值,在配置腳本中編寫,這一職能應更新只是這些資源的屬性。
  3. 如果存在相應的資源並確保屬性設置為當前且所有屬性值都匹配編寫配置腳本中的屬性值,該函數應該做什麼。
  4. 如果存在相應的資源,確保屬性設置為無,則它應被刪除。
  5. 如果不存在相應的資源,確保屬性設置為無,那麼它應該做什麼。

現在是時候要實現這些 TrustedHosts 的自訂資源相關的三個功能。打開 Windows PowerShell ISE,執行這三項功能並將其保存在 WinRM\DSC­Resources\TrustedHosts TrustedHosts.psm1 同名的目錄。

Get TargetResource TrustedHosts 自訂資源

此函數接受作為參數在 MOF 檔案中定義的所有屬性。憑據參數是類型 PSCredential。這是由 Windows PowerShell 公開用於捕獲和存儲的使用者名和密碼的 Microsoft.NET 框架類。其餘參數是字串類型。

在這個函數中,創建雜湊表用於返回當前的資源屬性,如中所示圖 2。它使用 WSMAN 提供程式讀取當前的 TrustedHosts 配置清單。該腳本檢查看看是否有任何電腦名稱稱清單中。如果有,它遍歷,並且與它們提供的電腦名稱稱相匹配。如果它找到確切的匹配項,它將更新確保屬性與價值的禮物或無價值。它還向返回的雜湊表中添加相同的電腦名稱稱。

圖 2 Get TargetResource 函數的 TrustedHosts 資源

Function Get-TargetResource
{
  param(
  # Computer name to be checked within TrustedHosts List
  [parameter(mandatory)]
  [string] $ComputerName,
  # This property determines whether computer name
  # should be added or removed from TrustedHosts
  [parameter(mandatory)]
  [string] $Ensure,
  # Credentials needed to manage WinRM TrustedHosts configuration
  [parameter(mandatory)]
  [PSCredential] $Credential
  )
  # Hashtable containing values is returned from this function
  $retval = @{}
  $retval.Add("Ensure","")
  $retval.Add("ComputerName", "")
  try{
    # Get current TrustedHosts comma-separated list using supplied credentials
    $TH = $(Get-Item WSMan:\localhost\Client\TrustedHosts `
      -credential $Credential).value
    Write-Verbose "Current TrustedHosts Configuration has $TH"
    if($TH.Length -gt 0){
      $temp = $TH -split ","
      [string] $newNode = ""
      # Check if value in TrustedHosts list already have few computer names
      if($temp.Length -gt 0) {
        for($i = 0; $i -lt $temp.Length; $i++){
          if($temp[$i].Trim() -eq $ComputerName.Trim())
          {
            $retval.Ensure = "Present"  # Found computer name
            $retval.ComputerName = $ComputerName
            break;
          } else {
            $retval.Ensure = "Absent" # Computer name is not in the list
            $retval.ComputerName = $ComputerName
          }
        }
      }
    } else {
      # TrustedHosts list is empty
      $retval.Ensure = "Absent"
      $retval.ComputerName = $ComputerName
    }
  } catch {
     Write-Verbose " Error executing Get-TargetResource function"
     Write-Verbose $Error[0].Exception.ToString()
  }
}

集 TargetResource TrustedHosts 自訂資源

此函數也採用相同的參數集作為獲取目標­資源。在此函數中,你可以使用 WSMAN 提供從 TrustedHosts 清單中的當前電腦名稱稱。然後,確保屬性的值,根據電腦名稱稱添加或從 TrustedHosts 清單中刪除。

如果的值為當前,電腦名稱稱添加到清單中。如果值不存在,它被移除。兩種操作通過設置專案 Cmdlet 和 WSMAN 提供程式,如中所示圖 3。還有從函數沒有傳回值。您應該使用寫詳細使用詳細的開關時,在主控台上提供額外的回饋。

圖 3 套 TargetResource 函數的 TrustedHosts 資源

Function Set-TargetResource
{
  param(
  # Computer name to be added within TrustedHosts List
  [parameter(mandatory)]
  [string] $ComputerName,
  # This property determines whether computer name should be
  # added or removed from TrustedHosts
  [parameter(mandatory)]
  [string] $Ensure,
  # Credentials needed to manage WinRM TrustedHosts configuration
  [parameter(mandatory)]
  [PSCredential] $Credential
  )
  try {
    # Get current TrustedHosts comma-separated list
    # using supplied credentials
    $TH = (Get-Item WSMan:\localhost\Client\TrustedHosts `
      -credential $Credential).value
    # Computer name should be added to the TrustedHosts list
    if($Ensure -eq "Present") {
      Write-Verbose "The current value is $TH"
      if($TH.Length -gt 0)
        {
          # Adding Computer name when the TrustedHosts list
           # configuration is not empty
          $TH += ",$ComputerName"
          Set-Item WSMan:\localhost\Client\TrustedHosts `
            -Value $TH -credential $Credential -FORCE
        } else {
          # Adding Computer name when the TrustedHosts list
           # configuration is empty
          $TH += "$ComputerName"
          Set-Item WSMan:\localhost\Client\TrustedHosts `
            -Value $TH -credential $Credential -FORCE
        }
          Write-Verbose "The New value is $TH"
      } else {
        # Computer name should be removed from TrustedHosts list
        Write-Verbose "The current value is $TH"
        if($TH.Length -gt 0) {
          $temp = $TH -split ","
          [string] $newNode = ""
          if($temp.Length -gt 0)
            {
               for($i = 0; $i -lt $temp.Length; $i++){
                 if($temp[$i].Trim() -ne $ComputerName.Trim())
                   {
                     $newNode += $temp[$i] + ","
                   }
                 }
                         $newNode = $newNode.TrimEnd(",")
                    # Updating list after removing the Computer name
                    Set-Item WSMan:\localhost\Client\TrustedHosts -Value $newNode
                      -credential $Credential -Force
                    Write-Verbose "The New value is $TH"
               }
             }
     }
   } catch {
      Write-Verbose " Error executing Set-TargetResource function"
      Write-Verbose $Error[0].Exception.ToString()
   }
}

測試 TargetResource TrustedHosts 自訂資源

這個函數是類似于得到 TargetResource。唯一的區別是它從這個函數返回布林值 True 或 False。首先,查詢使用 WSMAN 提供程式的 TrustedHosts 屬性的當前值。因為可能有多個以逗號分隔的電腦名稱稱,您會需要遍歷它們。

同時迴圈,如果你找到匹配與配置提供的名稱的電腦名稱稱,請檢查是否應出席或缺席。如果確保屬性值是禮物和 TrustedHosts 設置中存在該電腦名稱稱,則傳回值設置為 True。如果確保屬性值是缺席和 TrustedHosts 設置中存在該電腦名稱稱,則傳回值設置為 False。

如果確保屬性值是當前電腦名稱稱中的 TrustedHosts 設置不存在,則傳回值設置為 False。如果確保屬性值是缺席中 TrustedHosts 設置電腦名稱稱不存在,返回的值設置為 True,如中所示圖 4

圖 4 測試 TargetResource 函數的 TrustedHosts 資源

Function Test-TargetResource
{
  param(
  # Computer name to be added within TrustedHosts List
  [parameter(mandatory)]
  [string] $ComputerName,
  # This property determines whether computer name should
  # be added or removed from TrustedHosts
  [parameter(mandatory)]
  [string] $Ensure,
  # Credentials needd to manage WinRM TrustedHosts configuration
  [parameter(mandatory)]
  [PSCredential] $Credential
  )
  # Boolean return variable from this function
  $retval = $false
  try {
    # Get current TrustedHosts comma-separated list using supplied credentials
    $TH = (Get-Item WSMan:\localhost\Client\TrustedHosts `
      -credential $Credential).value
    if($TH.Length -gt 0) {
      $temp = $TH -split ","
      [string] $newNode = ""
      if($temp.Length -gt 0) {
        for($i = 0; $i -lt $temp.Length; $i++){
          if($temp[$i].Trim() -eq $ComputerName.Trim()) {
            # Computer name exists within TrustedHosts list
            if($Ensure -eq "Present")
            {
              # Computer name exists and expected to be present
              $retval= $true
              break;
            } else {
              # Computer name exists and is not expected to be present
              $retval = $false
            }
            break;
          } else {
            # Computer name does not exist
            if($Ensure -eq "Present")
            {
              $retval = $false
            } else {
              $retval = $true
            }
          }
        }
      }
    } else {
      # TrustedHosts list is empty
      if($Ensure -eq "Present"){
        $retval= $false
      } else {
        $retval = $true
      }
    }
      return $retval
  } catch {
    Write-Verbose " Error executing Test-TargetResource function"
    Write-Verbose $Error[0].Exception.ToString()
  }
}

匯出自訂資源功能

實施後的三個強制性 DSC 資源功能,您應該將它們匯出。有兩種方法執行此操作:

  1. 創建一個 Windows PowerShell 模組清單.psd1 檔旁邊的.psm1 檔。
  2. 匯出的函數從指令檔本身使用出口 ModuleMember Cmdlet。

使用第二種方法匯出的函數。在此方法中,從使用出口 ModuleMember Cmdlet 的模組匯出帶有 TargetResource 尾碼的所有功能。如果你有興趣在使用第一種方法,按照相同的步驟,以前用於創建為每個 DSC 資源模組的清單檔。首先,執行新 ModuleManifest 命令和存儲生成的.psd1 與.psm1 TrustedHosts 資料夾中和。Schema.mof 檔:

# Exports the three functiona as part of the module
Export-ModuleMember -Function *-TargetResource

在配置中使用自訂資源 TrustedHosts

接下來,您將創建一個配置腳本來使用新的 TrustedHosts 自訂資源。將此配置應用到本地主機節點並提供給 TrustedHosts 資源三個屬性的值。配置腳本以強制性的憑據類型的參數的 [PSCredential]。此參數分配給該資源的憑據屬性,如中所示圖 5

圖 5 Get TargetResource 函數的 TrustedHosts 資源

Configuration TestWinRMTrustedHosts
{
  param([parameter(mandatory)] [pscredential] $Credential)
  import-dscresource -modulename WinRM
  node localhost
    {
      TrustedHosts TrustedHostEntry
        {
          ComputerName = "Client01.Contoso.com"
          Ensure ="Present"
          Credential = $Credential
        }
    }
}

預設情況下,DSC 不讓您在純文字中使用的憑據。執行此操作通過配置資料雜湊表。在雜湊表,添加具有真正的 PSDSCAllowPlainTextPassword 屬性作為其值。使用 PSDSCAllowPlainTextPassword 是一個安全風險,因為它允許您將密碼存儲為純文字在 MOF 檔案中。應使用安全證書作為一種最佳做法,以確保密碼並不存儲為純文字在 MOF 檔案和安全地傳輸使用此配置資料:

$ConfigData = @{
AllNodes = @(
  @{
    NodeName = "localhost"
    PSDscAllowPlainTextPassword = $true   
  }
  )
}

接下來,創建一個設定物件,通過執行配置腳本並在 MOF 檔案中,配置的位置傳遞­資料變數和憑據用 Get 憑據的命令:

TestWinRMTrustedHosts -OutputPath "C:\CR" -ConfigurationData $ConfigData `
  -credential (get-credential)

執行此命令生成一個 MOF 檔案,命名為 localhost.mof C:\CR 地點。當這執行時,它會要求輸入使用者名和密碼。後生成 MOF 檔案,它是應用在推送模式下配置的時間。通過執行開始 DscConfiguration 命令來執行此操作:

Start-DscConfiguration -Wait -Force -Path "C:\CR" -Verbose

應用配置之後, 檢查 localhosts WinRM TrustedHosts 設置的值。ComputerName 值 DC01 現在應該 TrustedHosts 值的一部分。您可以添加或刪除使用此自訂的資源的 TrustedHosts 值的電腦名稱稱。

導入 DSCResource

您將使用導入 DSCResource,將自訂資源導入到配置腳本以執行設計時驗證的自訂資源。這是另一種方式,以確保好撰寫了自訂的資源。自訂資源,可在 C:\ProgramFiles\WindowsPowerShell\Modules。要導入或載入這些模組,請使用導入 DSCResource 函數。導入 DSCResource 是一個動態的功能,僅在配置腳本中可用。此函數不能超出配置的塊,它又非位置的兩個參數:

  1. ModuleName — — 應導入的模組的名稱。
  2. 名稱 — — 應導入的資源的名稱。

如果只提供了 ModuleName 參數和省略名稱,可用模組中的所有資源將被導都入。你可以使用這種方法來載入配置示例中的 TrustedHosts 資源:

Import-DSCResource –ModuleName WinRM

如果只提供了名稱參數,並且省略了 ModuleName,DSC 將搜索所有的模組位置,可從 $env: PSModulePath,若要查找資源。一旦被發現,它導入的資源:

Import-DSCResource –Name TrustedHosts

如果提供了 ModuleName 和名稱的參數,該資源載入和導入從提供的模組名稱。這是迄今為止最快的機制,以發現和載入資源,因為 DSC 不必執行廣泛的搜索:

Import-DSCResource –ModuleName WinRM –ResourceName TrustedHosts

您可以在同一時間使用逗號-載入多個資源­分離以及資源名稱。

總結

DSC 為您提供了必要的擴展,以便創建新資源並在配置中使用它們。Windows PowerShell 實施強制性的一些函數,從而簡化了創作 DSC 自訂資源。這些職能應遵循幾條規則在其執行情況。

如果開箱提供的資源或從社會不能滿足您的需要,您可以輕鬆創建您自己。這篇文章向您展示了如何創建一個簡單的自訂資源具有完整的實施。它還顯示如何你應該包裝在 Windows PowerShell 模組中,這些資源由規則規管其檔和資料夾的結構。


Ritesh Modi 是一位建築師與 Microsoft 服務。他有超過十年的經驗,構建和部署企業級解決方案。他是 Windows PowerShell,所需狀態配置和系統中心的專家。他曾在 TechEd,內部培訓和在博客 automationnext.wordpress.com。聯繫到他在 rimodi@microsoft.com

感謝以下技術專家對本文的審閱:Abhik · 查特吉