系统学习 学习路径总入口:先选领域,再建立模型,最后用故障演练验证

版本信息最后核对:2026-10-25

用声明式配置描述目标状态,让系统自动检查并收敛到该状态

适用场景

需要把服务器角色、文件、注册表、服务、功能安装等状态写成可审查、可重复的配置时使用。它适合批量初始化、环境一致性检查和配置漂移检测,不适合临时改一台机器上的单个设置。

DSC 是“声明目标状态”,不是“执行一串命令”。同一份配置重复应用应当得到相同结果;如果操作本身不可重入,应先改造成资源或脚本资源。

核心概念

5.1 与 7.x 差异

常用操作

# 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' }

易错点

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 编译配置和 Start-DscConfiguration 分别做了什么?
  2. 为什么含凭据的 MOF 需要额外保护?
  3. 从 5.1 迁移到 7.x 时,哪些 DSC 能力不能直接沿用?
答案
  1. 编译把配置和资源声明转换成 MOF,不改系统;Start-DscConfiguration 读取 MOF,调用资源的 Test/Set 把目标机收敛到声明状态。
  2. MOF 可能包含可还原的密码或凭据材料,读取该文件的人可能据此提权;要用证书加密、限制目录 ACL,或改用无需写密码的身份。
  3. 5.1 的 Configuration 关键字、LCM、拉取服务和 Start-DscConfiguration 工作流不能直接用在 7.x 的 DSC v2 上;要改用资源调用或独立的 DSC v3 配置。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令