DSC配置保持重启

时间:2016-04-10 20:40:06

标签: powershell windows-server-2012 dsc powershell-v5.0

我的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 个答案:

答案 0 :(得分:4)

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

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

  2. 运行Get-DscConfigurationStatus cmdlet以获取上次配置运行的状态。如果在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/