共用方式為


DSC 資源

概觀

DSC 資源提供標準化介面來管理系統的設定。 DSC 資源會定義您可以管理的屬性,並包含呼叫「讓它成為」的 PowerShell 程式代碼 Invoke-DscResource

DSC 資源可以將某個專案模型化為一般檔案或 IIS 伺服器設定的特定專案。 相關 DSC 資源的群組會合併到 PowerShell 模組中。 模組提供 DSC 資源的可攜式版本套件,並包含其相關元數據和檔。

每個 DSC 資源都有一個架構,可決定搭配或設定使用 DSC 資源Invoke-DscResource所需的語法。 DSC 資源的架構是以下列方式定義:

  • <Resource Name>.psm1 file:類別型 DSC 資源會在類別定義中定義其架構。 語法專案會表示為類別屬性。 如需詳細資訊,請參閱 about_Classes
  • Schema.Moffile:MOF 型 DSC 資源會使用 Managed 物件格式,在schema.mof檔案中定義其架構。

若要擷取 DSC 資源的語法,請使用 Get-DSCResource Cmdlet 搭配 Syntax 參數。 這就像搭配使用 Get-Command 搭配 Syntax 參數來取得 Cmdlet 語法。 輸出會顯示 DSC 組態中用於 DSC 資源區塊的範本。

Get-DscResource -Syntax Service
Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DesktopInteract = [bool]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupTimeout = [UInt32]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Ignore | Running | Stopped }]
    [TerminateTimeout = [UInt32]]
}

如同 Cmdlet 語法,方括弧中的 索引鍵 是選擇性的。 型別會指定每個索引鍵預期的數據類型。

若要確保 Spooler 服務正在執行:

$SharedDscParameters = @{
    Name = 'Service'
    ModuleName = 'PSDscResources'
    Property = @{
        Name  = 'Spooler'
        State = 'Running'
    }
}
$TestResult = Invoke-DscResource -Method Test @SharedDscParameters
if ($TestResult.InDesiredState) {
    Write-Host -ForegroundColor Cyan -Object 'Already in desired state.'
} else {
    Write-Host -ForegroundColor Magenta -Object 'Enforcing desired state.'
    Invoke-DscResource -Method Set @SharedDscParameters
}

$SharedDscParameters變數是哈希表,其中包含使用 Invoke-DscResource呼叫資源的TestSet方法時所使用的參數。 第一次呼叫 Invoke-DscResource 會使用 Test 方法來驗證服務是否 Spooler 正在執行,並將結果儲存在變數中 $TestResult

下一個步驟取決於服務是否已處於所需狀態。 最佳做法是在強制執行之前一律先確認所需的狀態,並在必要時只呼叫 Set 方法。 在此範例中,腳本會將關於 DSC 資源是否處於所需狀態的訊息寫入主控台。 然後,如果服務未執行,它會使用 Set 方法來呼叫 Invoke-DscResource ,以強制執行所需的狀態。