2016-05-03 18 views
4

Ich habe eine DSC-Ressource, die Dotnet-Funktion installiert und installiert dann ein Update auf Dotnet.Konfigurieren Sie eine DSC-Ressource zum Neustart

Im Local Configuration Manager habe ich RebootNodeIfNeeded auf $true gesetzt.

Nach der Installation von dotnet wird kein Neustart angefordert (dies wurde auch mit dem Modul xPendingReboot bestätigt).

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" 
} 

} 

Dies ist ein Problem, da Dotnet nicht richtig mit unserer App funktioniert, wenn der Server neu gestartet wurde und wir versuchen, diese Neustarts automatisch keine Benutzereingaben erforderlich passieren.

Gibt es eine Möglichkeit, einen Ressourcen-Push zum Localdscmanager (LCM) zu machen, der einen Neustart benötigt, wenn etwas installiert wird?

Ich habe den unten Befehl

$global:DSCMachineStatus = 1 

gefunden, die einen Neustart setzt. aber ich bin unsicher, wie man es benutzt, um direkt nach der Installation des 4.5-Moduls neu zu starten.

Antwort

4

Normalerweise, wenn ich .Net installieren, funktioniert es ohne Neustart, aber wenn Sie die Konfiguration erzwingen wollen, es nach der Installation neu zu starten, können Sie Folgendes tun. Es funktioniert nicht für Drift (.net wird nach der Erstinstallation entfernt.) Während der Konfigurationsdrift installiert die Konfiguration weiterhin .net, aber die Skript-Ressource, die ich zum Neustart hinzugefügt habe, glaubt, dass sie bereits neu gestartet wurde.

Die DependsOn ist sehr wichtig hier, Sie möchten nicht, dass dieses Skript ausgeführt wird, bevor die WindowsFeature erfolgreich ausgeführt wurde.

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' 
    }  
} 
1

$global:DSCMachineStatus = 1 Funktion zu erhalten, müssen Sie zuerst Local Configuration Manager auf dem entfernten Knoten konfigurieren automatische Neustarts zu ermöglichen. Sie können es wie folgt tun:

Configuration ConfigureRebootOnNode 
{ 
    param (
     [Parameter(Mandatory=$true)] 
     [ValidateNotNullOrEmpty()] 
     [String] 
     $NodeName 
    ) 

    Node $NodeName 
    { 
     LocalConfigurationManager 
     { 
      RebootNodeIfNeeded = $true 
     } 
    } 
} 

ConfigureRebootOnNode -NodeName myserver 
Set-DscLocalConfigurationManager .\ConfigureRebootOnNode -Wait -Verbose 

(Code genommen von colin's alm corner)