配置本地配置管理器
适用于:Windows PowerShell 5.0
本地配置管理器 (LCM) 是 Desired State Configuration (DSC) 的引擎。 LCM 在每个目标节点上运行,负责分析和执行发送到节点的配置。 它还负责 DSC 的许多方面,包括以下各方面。
- 确定刷新模式(推送或请求)。
- 指定节点请求和执行配置的频率。
- 将节点与请求服务相关联。
- 指定部分配置。
使用特殊类型的配置将 LCM 配置为指定以上各行为。 以下各节介绍如何配置 LCM。
Windows PowerShell 5.0 引入了全新的设置来管理本地配置管理器。 有关在 Windows PowerShell 4.0 中配置 LCM 的信息,请参阅在早期版本的 Windows PowerShell 中配置本地配置管理器。
编写和执行 LCM 配置
若要配置 LCM,请创建并运行应用 LCM 设置的特殊类型的配置。 若要指定 LCM 配置,你可以使用 DscLocalConfigurationManager 特性。 下面演示将 LCM 设置为推送模式的简单配置。
[DSCLocalConfigurationManager()]
configuration LCMConfig
{
Node localhost
{
Settings
{
RefreshMode = 'Push'
}
}
}
将设置应用于 LCM 的过程与应用 DSC 配置的过程类似。 创建 LCM 配置、将其编译为 MOF 文件,然后应用于节点。 与 DSC 配置不同的是,不通过调用 Start-DscConfiguration cmdlet 来执行 LCM 配置。 而是通过调用 Set-DscLocalConfigurationManager,将路径作为参数提供给 LCM 配置 MOF。 执行 LCM 配置后,可以通过调用 Get-DscLocalConfigurationManager cmdlet 查看 LCM 的属性。
LCM 配置只能包含有限组资源的块。 在上面的示例中,调用的唯一资源名为 Settings。 其他可用资源有:
- ConfigurationRepositoryWeb:指定用于配置的 HTTP 请求服务。
- ConfigurationRepositoryShare:指定用于配置的 SMB 共享。
- ResourceRepositoryWeb:指定用于模块的 HTTP 请求服务。
- ResourceRepositoryShare:指定用于模块的 SMB 共享。
- ReportServerWeb:指定将报告发送到的 HTTP 请求服务。
- PartialConfiguration:提供数据以启用部分配置。
基本设置
不通过指定请求服务终结点/路径和部分配置 LCM 的所有属性,而是在 Settings 块中进行配置。 Settings 块中提供下列属性。
properties | 类型 | 说明 |
---|---|---|
ActionAfterReboot | 字符串 | 指定在应用配置期间重启后进行什么操作。 可取值为 ContinueConfiguration 和 StopConfiguration。
|
AllowModuleOverwrite | bool | 若允许从请求服务下载的新配置覆盖目标节点上的旧配置,则为 $TRUE。 否则为 $FALSE。 |
CertificateID | 字符串 | 用于保护在配置中传递的凭据的证书指纹。 更多详细信息,请参阅 Want to secure credentials in Windows PowerShell Desired State Configuration?(希望在 Windows PowerShell Desired State Configuration 中保护凭据?)。 注意: 如果使用 Azure 自动化 DSC 请求服务,则会自动进行管理。 |
ConfigurationDownloadManagers | CimInstance[] | 已过时。 使用 ConfigurationRepositoryWeb 和 ConfigurationRepositoryShare 块定义配置请求服务终结点。 |
ConfigurationID | 字符串 | 用于向后兼容早期版本的请求服务。 用于标识要从请求服务获取的配置文件的 GUID。 如果配置 MOF 名为 ConfigurationID.mof,那么节点将在请求服务上请求配置。 注意: 如果设置此属性,将无法使用 RegistrationKey 将节点注册到请求服务 。 有关详细信息,请参阅使用配置名称设置请求客户端。 |
ConfigurationMode | 字符串 | 指定 LCM 实际如何将配置应用到目标节点。 可能的值为 ApplyOnly、ApplyAndMonitor 和 ApplyAndAutoCorrect。
|
ConfigurationModeFrequencyMins | UInt32 | 检查和应用当前配置的时间间隔(以分钟为单位)。 如果将 ConfigurationMode 属性设置为 ApplyOnly,则将忽略此属性。 默认值为 15。 |
DebugMode | 字符串 | 可取值为 None、ForceModuleImport 和 All。
|
RebootNodeIfNeeded | bool | 将此设置为 $true 可使资源使用 $global:DSCMachineStatus 标志重新启动节点。 否则,你必须为要求重启的配置手动重启节点。 默认值是 $false 。 若要在通过 DSC 以外的其他配置(例如 Windows Installer)执行重启条件时使用此设置,请将此设置和 ComputerManagementDsc 模块中的 PendingReboot 资源组合使用。 |
RefreshMode | 字符串 | 指定 LCM 如何获取配置。 可取值为 Disabled、Push 和 Pull。
|
RefreshFrequencyMins | Uint32 | LCM 按此时间间隔(以分钟为单位)检查请求服务,以获取更新的配置并检查本地配置是否发生了偏移。 无论是否下载了更新,都将应用该配置。 如果 LCM 未配置为请求模式,则将忽略此值。 默认值为 30。 |
ReportManagers | CimInstance[] | 已过时。 使用 ReportServerWeb 块定义终结点,以将报告数据发送到请求服务。 |
ResourceModuleManagers | CimInstance[] | 已过时。 使用 ResourceRepositoryWeb 和 ResourceRepositoryShare 块分别定义请求服务 HTTP 终结点和 SMB 路径。 |
PartialConfigurations | CimInstance | 未实现。 请勿使用。 |
StatusRetentionTimeInDays | UInt32 | LCM 保留当前配置状态的天数。 |
注意
LCM 基于以下条件启动 ConfigurationModeFrequencyMins 周期:
- 使用
Set-DscLocalConfigurationManager
应用更改了 ConfigurationModeFrequencyMins 的新的元配置 - 计算机重新启动
对于计时器进程遇到故障的任何状况,会在 30 秒内检测到该状况,并且会重新启动周期。 并发操作可能会延迟周期启动,如果此操作的持续时间超过配置的频率,则下一个计时器不会启动。 例如,元配置以 15 分钟请求频率进行配置,请求会在 T1 进行。 节点未在 16 分钟内完成工作。 第一个 15 分钟周期会被忽略,下一个请求会在 T1+15+15 进行。
请求方案中的初始意图在于将 RefreshFrequencyMins
设置为比 ConfigurationModeFrequencyMins
长的时间。 本地配置将主要由 ConfigurationModeFrequencyMins
托管,以避免配置偏移,并且 RefreshFrequencyMins
用于跟踪管理员所做的实际配置更改。
请求服务
LCM 配置支持定义以下类型的请求服务终结点:
- 配置服务器:DSC 配置的存储库。 使用 ConfigurationRepositoryWeb(对于基于 Web 的服务器)和 ConfigurationRepositoryShare(对于基于 SMB 的服务器)块定义配置服务器。
- 资源服务器:打包为 PowerShell 模块的 DSC 资源存储库。 使用 ResourceRepositoryWeb(对于基于 Web 的服务器)和 ResourceRepositoryShare(对于基于 SMB 的服务器)块定义资源服务器。
- 报表服务器:DSC 将报表数据发送到的服务。 使用 ReportServerWeb 块定义报表服务器。 报表服务器必须是 Web 服务。
有关请求服务的更多详细信息,请参阅 Desired State Configuration 请求服务。
配置服务器块
若要定义基于 Web 的配置服务器,请创建 ConfigurationRepositoryWeb 块。 ConfigurationRepositoryWeb 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
AllowUnsecureConnection | bool | 设置为 $TRUE 以允许无需身份验证即可从节点连接到服务器。 设置为 $FALSE 以要求进行身份验证。 |
CertificateID | 字符串 | 用于向服务器进行身份验证的证书指纹。 |
ConfigurationNames | string[] | 目标节点将请求的配置名称的数组。 仅当通过 RegistrationKey 将节点注册到请求服务后,才使用这些操作。 有关详细信息,请参阅使用配置名称设置请求客户端。 |
RegistrationKey | 字符串 | 用于将节点注册到请求服务的 GUID。 有关详细信息,请参阅使用配置名称设置请求客户端。 |
ServerURL | 字符串 | 配置服务的 URL。 |
ProxyURL* | 字符串 | 要在与配置服务通信时使用的 http 代理的 URL。 |
ProxyCredential* | pscredential | 用于 http 代理的凭据。 |
注意
在 Windows 版本 1809 及更高版本中受支持。
提供简化本地节点的 ConfigurationRepositoryWeb 值配置的示例脚本 - 请参阅生成 DSC 元配置
要定义基于 SMB 的配置服务器,请创建 ConfigurationRepositoryShare 块。 ConfigurationRepositoryShare 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
凭据 | MSFT_Credential | 用于对 SMB 共享进行身份验证的凭据。 |
SourcePath | 字符串 | SMB 共享的路径。 |
资源服务器块
若要定义基于 Web 的资源服务器,请创建 ResourceRepositoryWeb 块。 ResourceRepositoryWeb 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
AllowUnsecureConnection | bool | 设置为 $TRUE 以允许无需身份验证即可从节点连接到服务器。 设置为 $FALSE 以要求进行身份验证。 |
CertificateID | 字符串 | 用于向服务器进行身份验证的证书指纹。 |
RegistrationKey | 字符串 | 用于将节点标识到请求服务的 GUID。 |
ServerURL | 字符串 | 配置服务器的 URL。 |
ProxyURL* | 字符串 | 要在与配置服务通信时使用的 http 代理的 URL。 |
ProxyCredential* | pscredential | 用于 http 代理的凭据。 |
注意
在 Windows 版本 1809 及更高版本中受支持。
提供简化本地节点的 ResourceRepositoryWeb 值配置的示例脚本 - 请参阅生成 DSC 元配置
若要定义的基于 SMB 的资源服务器,请创建 ResourceRepositoryShare 块。 ResourceRepositoryShare 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
凭据 | MSFT_Credential | 用于对 SMB 共享进行身份验证的凭据。 有关传递凭据的示例,请参阅设置 DSC SMB 请求服务器 |
SourcePath | 字符串 | SMB 共享的路径。 |
报表服务器块
若要定义报表服务器,请创建 ReportServerWeb 块。 报表服务器角色与基于 SMB 的请求服务不兼容。 ReportServerWeb 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
AllowUnsecureConnection | bool | 设置为 $TRUE 以允许无需身份验证即可从节点连接到服务器。 设置为 $FALSE 以要求进行身份验证。 |
CertificateID | 字符串 | 用于向服务器进行身份验证的证书指纹。 |
RegistrationKey | 字符串 | 用于将节点标识到请求服务的 GUID。 |
ServerURL | 字符串 | 配置服务器的 URL。 |
ProxyURL* | 字符串 | 要在与配置服务通信时使用的 http 代理的 URL。 |
ProxyCredential* | pscredential | 用于 http 代理的凭据。 |
注意
在 Windows 版本 1809 及更高版本中受支持。
提供简化本地节点的 ReportServerWeb 值配置的示例脚本 - 请参阅生成 DSC 元配置
部分配置
若要定义部分配置,请创建 PartialConfiguration 块。 有关部分配置的详细信息,请参阅 DSC 部分配置。 PartialConfiguration 定义以下属性。
properties | 类型 | 说明 |
---|---|---|
ConfigurationSource | string[] | 以前在 ConfigurationRepositoryWeb 和 ConfigurationRepositoryShare 块中定义的配置服务器的名称数组,将从其中拉取部分配置。 |
DependsOn | string{} | 应用此部分配置之前必须完成的其他配置名称的列表。 |
说明 | 字符串 | 用于描述部分配置的文本。 |
ExclusiveResources | string[] | 此部分配置专用的资源数组。 |
RefreshMode | 字符串 | 指定 LCM 如何获取此部分配置。 可取值为 Disabled、Push 和 Pull。
|
ResourceModuleSource | string[] | 可从中下载此部分配置所需资源的资源服务器的名称数组。 这些名称必须表示之前在 ResourceRepositoryWeb 和 ResourceRepositoryShare 块中定义的服务终结点。 |
注意
Azure Automation DSC 支持部分配置,但每个节点只能从每个自动化帐户中请求一个配置。
另请参阅
概念
Desired State Configuration 概述