【发布时间】:2019-05-27 09:45:59
【问题描述】:
我有一个系统,它每晚执行一堆 DSC 配置来构建机器。这是由 Jenkins 中的计划作业 (MultiJob) 启动的。调度作业然后触发单个作业并等待所有作业完成。 90% 的时间它都可以正常工作。
但是,有时其中一项作业需要重新启动。这已通过 LCM 正确配置并使用 xPendingReboot DSC 资源。这里没有问题。
问题是在目标计算机上执行的 PowerShell 作业在启动重新启动时结束。然后这会触发构建过程的下一个阶段,该阶段失败,因为 DSC 过程实际上尚未完成。
有没有人知道如何在目标机器重新启动后重新获取挂起的 DSC 作业?
更新(未经测试):目前正在处理在作业完成时调用 LCM 上的 GetCimSessionInstanceId 方法以获取会话句柄的方案。然后,此会话 ID 可用于在通过 Get-CimSession cmdlet 重新启动后重新获取远程计算机上的 CimSession。我的假设是我将能够在 cim 会话上远程执行 Get-Job 以确定 DSC 进程是否继续。这导致了一个额外的问题。我们如何确定初始 dsc 作业是由于重新启动而结束还是实际上是进程的结束?
【问题讨论】:
标签: powershell jenkins dsc