0

我正在努力通过 Powershell DSC 配置重新启动。这是我的场景:

将 Azure RM 模板部署与 Visual Studio 2017 资源组项目一起使用:

  1. VM 已成功部署为嵌套(链接)模板
  2. 接下来,再次作为依赖于 VM 部署的嵌套(链接)模板,创建 Powershell DSC 扩展模板
  3. 在 Powershell DSC 配置中,应在某个阶段强制重启
  4. 尝试了两种方案:a)使用带有 Windows Server 2016 Datacenter 的 VM 和b) Windows Server 2012
  5. 两种情况都报告失败。a)第一个在重新启动时失败。b)然而,第二个似乎重新启动并完成配置,但资源组部署和 VS 输出仍然报告失败。
  6. 在这两种情况下,错误都是:“DSC 配置‘主’完成但出现错误。以下是前几个:发生 CA 常规错误,未包含在更具体的错误代码中。C”

这是 DSC 配置:

Configuration Main
{

param(
    ... a few parameters here ...
)

### required only for Windows Server 2012
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Force
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine -Force
###


Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName xPendingReboot

Node "localhost"
{
    LocalConfigurationManager
    {
        RebootNodeIfNeeded = $true
    }

    ... Initial Configuration ...

    Script Reboot
    {
        TestScript = {
            return (Test-Path HKLM:\SOFTWARE\MyMainKey\RebootKey)
        }
        SetScript = {
            New-Item -Path HKLM:\SOFTWARE\MyMainKey\RebootKey -Force
             $global:DSCMachineStatus = 1 
        }
        GetScript = { return @{result = 'Reboot'}}
        DependsOn = '<Initial Configuration>'
    } 
    # Reboot if pending
    xPendingReboot RebootCheck
    {
        Name = "RebootCheck"
    }

    ... Configuration Continued ...
}
}

任何帮助将不胜感激,谢谢!

一些更新:

实际上,我的“重新启动”要求是一种解决方法,因为当两个部署一个接一个地作为嵌套模板执行时 - Powershell DSC 失败(如果我单独部署它们,一切正常)。脚本资源使用 NSSM安装Windows 服务后,配置似乎失败。然后我注意到如果在机器上启动重新启动,则配置成功应用。因此,重新启动的解决方法....

4

1 回答 1

0

在这种情况下,解决方案是添加:

DependsOn = "[xPendingReboot]RebootCheck"

xPendingReboot 之后的所有资源

于 2021-08-10T04:37:32.670 回答