我的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的输出,但是我无法理解输出以告知重启循环的发生位置。
如何进一步调试?
答案 0 :(得分:4)
有许多方法可以解决此问题:
将RebootNodeIfNeeded
设为true,将ActionAfterReboot
设为StopConfiguration
。这种方式在重启后机器启动时DSC不会自动应用配置。然后,您可以从powershell控制台运行:Start-DscConfiguration -UseExisting -wait -verbose
以捕获详细消息。执行的最后一个资源是请求重新启动的资源。
运行Get-DscConfigurationStatus
cmdlet以获取上次配置运行的状态。如果在DSC中已经运行了其他内容,则此cmdlet将失败。它将为您提供处于所需状态且未处于所需状态的资源列表。它还将为JobId提供操作。搜索%windir%\system32\Configuration\ConfigurationStatus\{JobId}*.json
。此json文件包含配置运行的详细消息。这将仅使用WMF 5.0 RTM运行。
获取xDSCDiagnostics模块并使用此博客中的信息进行故障排除。 https://blogs.msdn.microsoft.com/powershell/2014/02/11/dsc-diagnostics-module-analyze-dsc-logs-instantly-now/