Come forzare DSC per eseguire tutte le configurazioni (pacchetti) anche quando è necessario un riavvio / riavvio

Da MSDN

RebootNodeIfNeeded : Alcune modifiche di configuration su un nodo di destinazione potrebbero richiedere che venga riavviato per le modifiche da applicare. Con il valore "true", questa properties; riavvia il nodo immediatamente e senza avviso. Se "false", la configuration sarà completata, ma il nodo deve essere riavviato manualmente affinché le modifiche abbiano effetto.

Quindi la mia comprensione è che DSC dovrebbe eseguire tutte le configurazioni anche se è necessario un riavvio

Ma nel mio caso non è vero, dopo l'installazione di un pacchetto a volte il DSC è contrassegnato per riavviare e DSC non esegue il resto delle configurazioni

Devo eseguire manualmente il command per eseguire il resto delle configurazioni

Start-DscConfiguration -Wait -Force -Path .\SomePath 

Vorrei forzare DSC per eseguire tutte le configurazioni e poi informarmi se ho bisogno di riavviare il server

Esempi di come configuro i pacchetti

  LocalConfigurationManager { RebootNodeIfNeeded = $false } Package MVC3 { Name = "Microsoft ASP.NET MVC 3" Ensure = "Present" Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe" ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA" Arguments = "/q" DependsOn = "[WindowsFeature]IIS" Credential = $Credential } Package MVC4 { Name = "Microsoft ASP.NET MVC 4 Runtime" Ensure = "Present" Path = "$Env:SystemDrive\AspNetMVC4Setup.exe" ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983" Arguments = "/q" DependsOn = "[Package]MVC3" Credential = $Credential } 

  • Come si esegue correttamente Disaster Recovery per un file server?
  • Accesso estremamente lento: printingnti di criteri di gruppo
  • Problema di compatibilità che si aggiorna a Windows Server 2012 (è necessario disinstallare i ruoli Desktop remoto?)
  • Perché posso creare oggetti nel mio controller di dominio solo di lettura?
  • Configurazione della networking corretta Hyper-V per Windows Server 2012?
  • Limitare l'accesso a Gateway RD basato su IP
  • Reinstallare ADCS CA Certificate & CRL su Workstation
  • Come posso collegarmi a un server Windows utilizzando un'interface di row di command? (CLI)
  • 2 Solutions collect form web for “Come forzare DSC per eseguire tutte le configurazioni (pacchetti) anche quando è necessario un riavvio / riavvio”

    Ho trovato questa soluzione

    Vorrei trovare un modo migliore per farlo però. Ma comunque funziona per me

    Credo ancora che il process DSC dovrebbe avvisarmi in qualche modo, non solo tramite Write-Verbose perché nel mio caso questo process viene avviato come parte del nostro process di integrazione continua

     [int]$maximumAttempts = 5 [int]$attempt = 0 [ValidateNotNull()][guid]$dscResTmp = [guid]::NewGuid() [ValidateNotNullOrEmpty()][string]$dscResPathTmp = Join-Path $baseFolderPathTmp "$dscResTmp.log" do { [bool]$stopLoop = $false [int]$attempt = ++$attempt Start-DscConfiguration -Wait -Force -Path $folderPathTmp 4> $dscResPathTmp [string[]]$rebootServerCoincidences = Select-String -Pattern "reboot" -Path $dscResPathTmp if ($rebootServerCoincidences.Length -le 0) { [bool]$stopLoop = $true } else { Write-Warning ($rebootServerCoincidences -join [Environment]::NewLine) } } while($stopLoop -eq $false -and $attempt -le $maximumAttempts) if ($stopLoop -eq $false) { Write-Warning "Max attempts reached" } 

    Ogni risorsa può richiedere al LCM di riavviare il server. Se una risorsa richiede un riavvio, pianifica un riavvio e pianifica l'LCM per eseguire un controllo di coerenza dopo il riavvio del server (per poter continuare la configuration).

    Se vuoi che ti comunichi (tramite il registro events o il stream verboso di Start-DscConfiguration) che è necessario un riavvio, è necessario impostare RebootIfNeeded su $ false. Allora sei responsabile di riavvii. Alcuni installatori non verranno eseguiti se è necessario un riavvio per la macchina, quindi potrebbe essere un block in attesa di riavviare manualmente il sistema.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.