PowerShell 理想狀態配置 (Desired State Configuration)


概述

PowerShell DSC 與 PowerShell 指令碼不同,它確保遠端 Windows 系統處於理想狀態,這是一種宣告式方法,與被認為是命令式方法的 PowerShell 指令碼和其他程式語言不同。

在本文中,我們將學習 DSC 的 **推送 (Push)** 方法,這是一種常用的初學者方法,不需要拉取伺服器。拉取伺服器會定期輪詢遠端伺服器併為其設定理想配置,這是一種自動化方式。

對於推送配置,我們將考慮以下幾個方面。

  • 獲取要配置的 DSC 資源。

  • 建立節點配置。

  • 編譯節點配置。

  • 將節點配置推送到遠端節點。

  • 測試節點配置。

獲取要配置的 DSC 資源

Windows 伺服器附帶預設的 DSC 資源。要檢查 DSC 可用的資源,請執行 **Get-DSCResource** 命令。

這些是內建資源,您可以檢視 DSC 社群頁面以獲取有關其他資源和儲存庫的更多資訊。

https://github.com/dsccommunity

要獲取其屬性的特定資源資訊,

示例

Get-DscResource -Name File | Select -ExpandProperty Properties

輸出

在此 File DSC 資源中,**DestinationPath** 屬性是必需的。

在本文中,我們將使用檔案資源。

建立節點配置

要建立節點配置,我們將以檔案資源為例,首先,我們將停止 Spooler 服務,然後我們將 **FileSearchOut.csv** 複製到我們建立的目標伺服器資料夾。(兩者之間沒有關係,這只是一種示例。)

這裡的目標伺服器是 Win2k16,您也可以在陣列或迴圈中傳遞多個節點。

Configuration CopyFile{
   Node Win2k16{
      Service SpoolerStop{
         Name = 'Spooler'
         State = 'Stopped'
         StartupType = 'Disabled'
      }
      File CopyOutputFile{
         SourcePath = "\adserver\Shared\Filesearchout.csv"
         DestinationPath = "C:\Temp\"
         DependsOn = '[Service]SpoolerStop'
         Force = $true
      }
   }
}

您可以透過執行指令碼載入此配置。它不會返回任何內容,但會將程式碼儲存在記憶體中。

編譯節點配置

一旦我們在記憶體中有了配置,我們首先需要編譯配置才能將其推送到遠端伺服器。要編譯配置,我們需要執行該配置,它將為每個節點生成管理物件格式 (MOF) 檔案。

這就是編譯配置的方法,它會將 MOF 檔案儲存在 **TestDSC** 資料夾中。

示例

CopyFile -OutputPath C:\Temp\TestDSC

輸出

MOF 檔名為 **NodeName.mof**。此檔案儲存該節點的配置,每次執行此配置檔案時,它都會確保節點應處於理想狀態。

執行節點配置

要為此節點執行配置,我們需要執行 **Start-DscConfiguration** 命令,並需要提供儲存此配置的路徑,如下所示。

Start-DscConfiguration -Path C:\Temp\TestDSC -Wait -Force -Verbose

因此,我們可以看到配置已傳送到遠端節點,並且已完成。

測試節點配置

您可以登入並檢查遠端節點,並驗證這些資源是否處於理想狀態。

您可以直接使用 DSC 命令列來檢查哪些資源處於理想狀態。為此,使用 **Test-DSCConfiguration** 命令。

示例

Test-DscConfiguration -Path C:\Temp\TestDSC | ft -AutoSize

輸出

或者您可以直接查詢計算機是否處於理想狀態。

PS C:\Users\Administrator> Test-DscConfiguration -ComputerName Win2k16 True

更新於:2022年2月18日

1K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告