微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

windows – 即使需要重启/重启,如何强制DSC执行所有配置(包)

MSDN

RebootNodeIfNeeded: Certain configuration changes on a target node might require it to be restarted for the changes to be applied. With the value “true,” this property will restart the node immediately and without warning. If “false,” the configuration will be completed,but the node must be restarted manually for the changes to take effect.

所以我的理解是,即使需要重启,DSC也应该运行所有配置

但在我的情况下并非如此,安装包后有时会将DSC标记为重新启动,DSC不会运行其余的配置

我必须再次手动执行命令才能运行其余配置

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

我想强制DSC运行所有配置,然后通知我是否需要重新启动服务器

我如何配置包的示例

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
    }
我想出了这个解决方

我想找到一个更好的方法来做到这一点.但无论如何它对我有

我仍然认为DSC过程应该以某种方式通知我,而不仅仅是通过Write-Verbose,因为在我的情况下,这个过程是作为我们的持续集成过程的一部分启动的

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

原文地址:https://www.jb51.cc/windows/367823.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐