2

我的 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 的输出,但我无法充分了解输出以判断重启循环发生的位置。

我该如何进一步调试呢?

4

1 回答 1

5

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

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

  2. 运行Get-DscConfigurationStatuscmdlet 以获取上次配置运行的状态。如果 DSC 中已在运行其他内容,则此 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/

于 2016-04-12T17:48:56.867 回答