【问题标题】:Configure a DSC Resource to restart配置 DSC 资源以重新启动
【发布时间】:2016-05-03 06:42:24
【问题描述】:

我有一个 DSC 资源,它安装 dotnet 功能,然后安装 dotnet 更新。

在本地配置管理器中,我已将 RebootNodeIfNeeded 设置为 $true

dotnet 安装后,它不会请求重新启动(甚至使用 xPendingReboot 模块来确认这一点)。

Configuration WebServer
{
WindowsFeature NetFramework45Core
{
    Name = "Net-Framework-45-Core"
    Ensure = "Present"
}

xPendingReboot Reboot
{
    Name = "Prior to upgrading Dotnet4.5.2"
}

cChocoPackageInstaller InstallDotNet452
{
    name = "dotnet4.5.2"
}

}

这是一个问题,因为 dotnet 无法在我们的应用程序中正常工作,除非服务器已重新启动,并且我们正在尝试使这些重新启动自动发生,无需用户输入。

有什么方法可以将资源推送到 localdscmanager (LCM),它需要在安装某些东西时重新启动?

我找到了下面的命令

 $global:DSCMachineStatus = 1 

设置重启。但我不确定如何在安装 4.5 模块后立即使用它重新启动。

【问题讨论】:

    标签: powershell powershell-5.0 dsc


    【解决方案1】:

    通常,当我安装 .Net 时,它无需重新启动即可运行,但如果您想在安装后强制您的配置重新启动它,您可以执行以下操作。它不适用于漂移(初始安装后删除.net。)在配置漂移期间,配置仍然会安装.net,但我添加到reboot的脚本资源会认为它已经重新启动。

    DependsOn 在这里非常重要,您不希望在 WindowsFeature 成功运行之前运行此脚本。

    configuration WebServer
    {
        WindowsFeature NetFramework45Core
        {
            Name = "Net-Framework-45-Core"
            Ensure = "Present"
        }
    
    
        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 = 'result'}}
            DependsOn = '[WindowsFeature]NetFramework45Core'
        }    
    }
    

    【讨论】:

      【解决方案2】:

      要让$global:DSCMachineStatus = 1 正常工作,您首先需要在远程节点上配置Local Configuration Manager 以允许自动重启。你可以这样做:

      Configuration ConfigureRebootOnNode
      {
          param (
              [Parameter(Mandatory=$true)]
              [ValidateNotNullOrEmpty()]
              [String]
              $NodeName
          )
      
          Node $NodeName
          {
              LocalConfigurationManager
              {
                  RebootNodeIfNeeded = $true
              }
          }
      }
      
      ConfigureRebootOnNode -NodeName myserver 
      Set-DscLocalConfigurationManager .\ConfigureRebootOnNode -Wait -Verbose
      

      (代码取自colin's alm corner

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多