【问题标题】:Disable Automatic Updates with PowerShell使用 PowerShell 禁用自动更新
【发布时间】:2011-04-15 20:54:47
【问题描述】:

我想知道如何在 Windows 机器上使用 PowerShell 禁用自动更新。

提前致谢!

【问题讨论】:

    标签: windows powershell


    【解决方案1】:

    这里有几个函数可以设置和获取 Windows 更新配置

    $SCRIPT:AutoUpdateNotificationLevels= @{   
    
    0="Not configured"; 
    1="Disabled"; 
    2="Notify before download";
    3="Notify before installation"; 
    4="Scheduled installation"
    
    }
    
    $SCRIPT:AutoUpdateDays=@{
    0="Every Day"; 
    1="Every Sunday"; 
    2="Every Monday"; 
    3="Every Tuesday"; 
    4="Every Wednesday";
    5="Every Thursday"; 
    6="Every Friday"; 
    7="Every Saturday"
    }
    
    
    Function Get-WindowsUpdateConfig
    {
        $AUSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
        $AUObj = New-Object -TypeName System.Object
    
        Add-Member -inputObject $AuObj -MemberType NoteProperty -Name "NotificationLevel"  `
                   -Value $AutoUpdateNotificationLevels[$AUSettings.NotificationLevel]
    
        Add-Member -inputObject $AuObj -MemberType NoteProperty -Name "UpdateDays" `
                   -Value $AutoUpdateDays[$AUSettings.ScheduledInstallationDay]
    
        Add-Member -inputObject $AuObj -MemberType NoteProperty -Name "UpdateHour"   `
                   -Value $AUSettings.ScheduledInstallationTime 
    
        Add-Member -inputObject $AuObj -MemberType NoteProperty -Name "Recommended updates" `
                   -Value $(IF ($AUSettings.IncludeRecommendedUpdates) {"Included"}  else {"Excluded"})
        $AuObj
     } 
    
    Function Set-WindowsUpdateConfig
    {
    Param (
    
    [Parameter()]
    [ValidateRange(0,4)]
    [int]
    $NotificationLevel , 
    
    [Parameter()]
    [ValidateRange(0,7)]
    [int]
    $Day, 
    
    [Parameter()]
    [ValidateRange(0,24)]
    [int]
    $hour, 
    
    [Parameter()]
    [bool]
    $IncludeRecommended
    )
    
     $AUSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
     if ($NotificationLevel)  {$AUSettings.NotificationLevel        =$NotificationLevel}
     if ($Day)                {$AUSettings.ScheduledInstallationDay =$Day}
     if ($hour)               {$AUSettings.ScheduledInstallationTime=$hour}
     if ($IncludeRecommended) {$AUSettings.IncludeRecommendedUpdates=$IncludeRecommended}
     $AUSettings.Save()
    } 
    

    【讨论】:

    • 谢谢安迪!其实我只需要修改对象的一个​​属性。这个解决方案对于我需要的东西来说有点矫枉过正,但它对我理解 Powershell 的工作原理有很大帮助。我认为这是目标:)
    • 来自MSDN:从 Windows 8 和 Windows Server 2012 开始,ScheduledInstallationDay 不受支持,并且将返回不可靠的值。如果您尝试修改 ScheduledInstallationDay,操作会看似成功,但没有任何效果。
    • MSDN 的另一点:从 Windows 8 和 Windows Server 2012 开始,ScheduledInstallationTime 不受支持并且将返回不可靠的值。如果您尝试修改 ScheduledInstallationTime,操作会看似成功但没有任何效果。
    【解决方案2】:

    这是一个链接以及如何设置注册表设置

    # http://support.microsoft.com/kb/328010
    
    New-Item HKLM:\SOFTWARE\Policies\Microsoft\Windows -Name WindowsUpdate
    New-Item HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate -Name AU
    New-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU -Name NoAutoUpdate -Value 1
    

    【讨论】:

    • 谢谢道格!它工作正常,但 UI 没有更新。必须编辑更多的 RegKey 才能完成该过程(我认为这可能不是真的)
    【解决方案3】:

    你可以使用CMD命令:

     sc stop wuauserv
    

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • @aschipfl:不知道你到底在说什么,但一般来说,缺乏解释并不是删除这里的正当理由。不可否认,停止 WU 服务确实停止更新。
    • 问题被标记为powershell,但你的答案与cmd有关...
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多