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+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.