【问题标题】:Check if DSC resource has been modified, if so, reboot检查 DSC 资源是否已被修改,如果是,请重新启动
【发布时间】:2017-12-15 12:10:16
【问题描述】:

在通过 ARM 模板构建 VM 后,我有一个在 Azure 自动化中运行的 DSC 脚本。它做了很多事情,其中​​一些我将展示,包括连接到域。在域之前,脚本的某些部分将更改服务器设置,这些设置在机器重新启动之前实际上不会“生效”。我的加入域部分使用DependsOn,所以当机器加入域时,我知道它将重新启动并且这些设置完全应用。

但是,前几天我注意到这些设置在稍后(部署服务器后的几天)发生了更改,并且 DSC 建议它没有配置,因为在应用了“重新配置”部分后它没有重新启动脚本。

我很想知道是否有 DSC 资源会检查 ResourceX 和 ResourceY 是否被修改/应用/更改,如果是,请重新启动机器以使更改生效。

Registry DisableUAC
# Only fully applied after a reboot if changed
{
    Ensure = "Present"
    Key = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
    ValueName = "EnableLUA"
    ValueData = "0"
    ValueType = "Dword"
}


Script LocationCulture
# Only fully applied after a reboot if changed
{
    GetScript =
    {
        Get-Culture | select -ExpandProperty Name
    }

    TestScript =
    {
        If (!((Get-Culture | select -ExpandProperty Name) -eq "en-GB")) {
            $false
        } else {
            $true
        }
    }

    SetScript =
    {
        Set-Culture en-GB
    }
}

这是四个需要重新启动才能应用的两个。最好只让机器重新启动一次,而不是在每次重新对齐之后。

【问题讨论】:

    标签: azure dsc


    【解决方案1】:

    我不认为有这样的资源,但如果资源明确设置了 VM 上的重启标志,您可以使用 xPendingReboot

        xPendingReboot Reboot1
        { 
            Name = 'BeforeSoftwareInstall'
        }
        LocalConfigurationManager
        {
            RebootNodeIfNeeded = $True
        } 
    

    【讨论】:

    • 我已经看到/读过这个,但遗憾的是 UAC 注册表更改(甚至通过 GUI 进行)并没有启动该模块检查等待重启的 3 个位置中的任何一个。为了检查这一点,我在启用/禁用 UAC 时做了一个之前/之后的注册表快照,并比较了更改/创建/删除的内容。
    • 嗯,我唯一能想到的就是在磁盘上为每个需要重新启动的操作生成一些文件,并使用脚本资源来检查文件是否存在,删除它们并设置重启标志。另外,我相信有禁用 uac 原生资源。
    • 谢谢,我去看看 UAC 资源
    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多