版本信息最后核对:2026-10-25
需要把服务器角色、文件、注册表、服务、功能安装等状态写成可审查、可重复的配置时使用。它适合批量初始化、环境一致性检查和配置漂移检测,不适合临时改一台机器上的单个设置。
DSC 是“声明目标状态”,不是“执行一串命令”。同一份配置重复应用应当得到相同结果;如果操作本身不可重入,应先改造成资源或脚本资源。
Get、Test、Set 三个动作,分别读取现状、判断是否符合、执行收敛;常见资源有 File、Service、WindowsFeature、Registry、Script。Configuration 块描述节点和资源,编译后生成 MOF;编译本身不改系统,Start-DscConfiguration 才应用。Test-DscConfiguration 只检查不修改,Get-DscConfiguration 读取已应用值。配置含 PSCredential 时,MOF 可能保存可还原的凭据,需要证书加密或托管身份。Configuration 关键字、LCM、推送和拉取服务、Start-DscConfiguration 都在系统里;拉取服务要额外安装角色功能。PSDesiredStateConfiguration 2.x 模块提供,从 PowerShell Gallery 单独安装;它没有 5.1 的 LCM 和拉取服务,主要供 Azure Machine Configuration 使用,File 等内置资源已被移除。dsc 命令行工具,使用 YAML/JSON 配置,不依赖 5.1 的 LCM;不要把 5.1 的 Configuration 脚本直接当成 DSC v3 配置。# 1. 查看本机可用的 DSC 资源
PS C:\> Get-DscResource | Sort-Object Name | Select-Object Name, Module, Version
# 2. 配置定义 WebServer.ps1;编译只生成 MOF,不改系统
Configuration WebServer {
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node 'localhost' {
WindowsFeature IIS { Name = 'Web-Server'; Ensure = 'Present' }
File Site { DestinationPath = 'C:\inetpub\wwwroot\index.html'; Contents = 'ok'; Ensure = 'Present' }
}
}
PS C:\> . .\WebServer.ps1
PS C:\> WebServer -OutputPath C:\DSC\WebServer
# 3. 先测试再应用;应用会真实修改目标机
PS C:\> Test-DscConfiguration -Path C:\DSC\WebServer -Detailed
PS C:\> Start-DscConfiguration -Path C:\DSC\WebServer -Wait -Verbose
PS C:\> Get-DscConfiguration
# 4. 日常检查配置漂移和 LCM 设置
PS C:\> Test-DscConfiguration -Detailed
PS C:\> Get-DscLocalConfigurationManager
# 5. 远程推送需要 WinRM 和管理员权限
PS C:\> Start-DscConfiguration -Path C:\DSC\WebServer -ComputerName SRV01 -Credential (Get-Credential) -Wait
# 6. PowerShell 7.x 安装 DSC 2.x 和资源模块,再调用单个资源
PS C:\> Install-Module PSDesiredStateConfiguration -MaximumVersion 2.99 -Scope CurrentUser; Install-Module PSDscResources -Scope CurrentUser
PS C:\> Invoke-DscResource -ModuleName PSDscResources -Name Service -Method Test -Property @{ Name = 'Spooler'; State = 'Running' }
WebServer -OutputPath 只生成 MOF;不执行 Start-DscConfiguration,系统不会有任何变化。Test-DscConfiguration。DependsOn;涉及重启时更要明确先后和等待行为。Configuration 关键字和 LCM 在 7.x 的 DSC v2 中不可用;照抄旧脚本会直接解析失败,先确认目标端是哪套 DSC。合上页面,先回答,再展开对照。
Start-DscConfiguration 分别做了什么?Start-DscConfiguration 读取 MOF,调用资源的 Test/Set 把目标机收敛到声明状态。Configuration 关键字、LCM、拉取服务和 Start-DscConfiguration 工作流不能直接用在 7.x 的 DSC v2 上;要改用资源调用或独立的 DSC v3 配置。
小程序版
微信扫码,随时查命令