我有一个系统,每晚执行一堆DSC配置来构建机器。这是由Jenkins中的预定作业(MultiJob)启动的。然后,计划作业将触发单个作业,并等待所有作业完成。 90%的时间没有问题。
但是,偶尔有一个单独的工作需要重启。这是使用LCM和使用xPendingReboot DSC资源正确配置的。这里没有问题。
问题是在启动重新启动时,目标计算机上正在执行的PowerShell作业结束。然后,这会触发构建过程的下一阶段,因为DSC过程实际上尚未完成。
有没有人知道重启后如何在目标机器上重新获取待处理的DSC作业?
更新(未经测试):当前正在处理调用LCM上的GetCimSessionInstanceId方法以在作业完成时获取会话句柄的方案。然后,可以使用此会话ID在重新引导后通过Get-CimSession cmdlet重新获取远程计算机上的CimSession。我的假设是,我能够在cim会话上远程执行Get-Job,以确定DSC过程是否继续。这导致了另一个问题。我们如何确定初始dsc作业是否因重新启动而结束,或者它是否实际上是该过程的结束?
答案 0 :(得分:1)
这种方法适用于您正在寻找的内容http://nanalakshmanan.github.io/blog/DSC-get-job-details-post-reboot/
如果您想在重新启动后从节点获取信息, 重新启动后将DSC设置为不继续。这可以通过使用以下方法来完成 元配置示例
[DscLocalConfigurationManager()]
Configuration Settings
{
Settings
{
ActionAfterReboot = 'StopConfiguration'
RebootNodeIfNeeded = $false
}
}
然后使用以下命令重新应用现有配置
Start-DscConfiguration -Wait -UseExisting -Verbose