重启后重新获取DSC后台作业

时间:2016-02-17 08:21:48

标签: powershell jenkins dsc

我有一个系统,每晚执行一堆DSC配置来构建机器。这是由Jenkins中的预定作业(MultiJob)启动的。然后,计划作业将触发单个作业,并等待所有作业完成。 90%的时间没有问题。

但是,偶尔有一个单独的工作需要重启。这是使用LCM和使用xPendingReboot DSC资源正确配置的。这里没有问题。

问题是在启动重新启动时,目标计算机上正在执行的PowerShell作业结束。然后,这会触发构建过程的下一阶段,因为DSC过程实际上尚未完成。

有没有人知道重启后如何在目标机器上重新获取待处理的DSC作业?

更新(未经测试):当前正在处理调用LCM上的GetCimSessionInstanceId方法以在作业完成时获取会话句柄的方案。然后,可以使用此会话ID在重新引导后通过Get-CimSession cmdlet重新获取远程计算机上的CimSession。我的假设是,我能够在cim会话上远程执行Get-Job,以确定DSC过程是否继续。这导致了另一个问题。我们如何确定初始d​​sc作业是否因重新启动而结束,或者它是否实际上是该过程的结束?

1 个答案:

答案 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