DSC 配置不断重启

DSC Configuration Keeps Restarting

我的 LocalConfigurationManager 设置如下:

[DSCLocalConfigurationManager()]
Configuration LCMConfig
{
    Node localhost
    {
        Settings
        {
            RebootNodeIfNeeded = $true
            ActionAfterReboot = 'ContinueConfiguration'
            AllowModuleOverwrite = $true
            DebugMode = 'All'
        }
    }
}
LCMConfig
Set-DscLocalConfigurationManager -Path .\LCMConfig -Verbose -Force

然后我通过

启动 DSC 配置
Start-DscConfiguration -Path .\RDS -Verbose -Wait

此配置设置了一个 RemoteApp 服务器,其中涉及一大堆步骤和几次重新启动。其中一次重新启动会一遍又一遍地循环发生。当重新启动发生时,我可以进入系统足够长的时间 运行 在 DSC 再次重新启动系统之前执行一两个快速命令。我如何判断 DSC 挂断在配置中的哪个特定资源上。

如果我运行

Remove-DSCConfiguration -Stage Pending,Current,Previous

重新启动停止...但随后我似乎失去了有关问题发生位置的所有信息。

我可以捕获 Get-DSCConfiguration 的输出,但我无法充分理解输出的意义,无法判断重启循环发生的位置。

我该如何进一步调试它?

有多种方法可以解决此问题:

  1. RebootNodeIfNeeded 设置为真,将 ActionAfterReboot 设置为 StopConfiguration。这样,当机器在重启后启动时,DSC 不会自动应用配置。然后,您可以从 powershell 控制台 运行: Start-DscConfiguration -UseExisting -wait -verbose 捕获详细消息。最后执行的资源是请求重新启动的资源。

  2. 运行 Get-DscConfigurationStatus cmdlet 获取上次配置的状态 运行。如果 DSC 中已经有其他内容 运行ning,则此 cmdlet 将失败。它将为您提供处于所需状态和未处于所需状态的资源列表。它还将为该操作提供 JobId。搜索 %windir%\system32\Configuration\ConfigurationStatus\{JobId}*.json。此 json 文件包含配置 运行 的详细消息。这将 运行 仅适用于 WMF 5.0 RTM。

  3. 获取 xDSCDiagnostics 模块并使用此博客中的信息进行故障排除。 https://blogs.msdn.microsoft.com/powershell/2014/02/11/dsc-diagnostics-module-analyze-dsc-logs-instantly-now/