【问题标题】:Pause windows update for up to 35 days and find out until which date updates are paused, via powershell暂停 Windows 更新长达 35 天,并通过 powershell 找出暂停更新的日期
【发布时间】:2020-10-06 23:32:19
【问题描述】:

在 Windows 10 中,可以使用“Windows 更新 - 高级选项”设置对话框(请参阅屏幕截图)暂停 Windows 更新长达 35 天。

问题 1: 我如何通过 powershell 或命令行来实现?

问题 2: 如何通过 powershell 或命令行找出 Windows 更新暂停的日期?或者:我如何知道还有多少天才能恢复 Windows 更新?

【问题讨论】:

    标签: powershell windows-10 windows-update


    【解决方案1】:

    这是一种在 Powershell 中通过修改注册表的简单方法:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesExpiryTime' -Value "2020-07-31T00:00:00Z"
    

    最后查询当前设置:

    Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings'| Select-Object PauseUpdatesExpiryTime
    

    这个已经测试过了,唯一的副作用是在高级设置页面中日期设置下拉是灰色的。

    【讨论】:

    • 刚刚意识到您需要将更新暂停值设置为 35 天:$pause = (Get-Date).AddDays(35)$pause = $pause.ToUniversalTime().ToString( "yyyy-MM-ddTHH:mm:ssZ" )Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesExpiryTime' -Value $pause
    • 如图所示,新行已被剥离并且不起作用。需要额外的;工作,像这样: $pause = (Get-Date).AddDays(35) $pause = $pause.ToUniversalTime().ToString( "yyyy-MM-ddTHH:mm:ssZ" ) Set-ItemProperty -Path 'HKLM :\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesExpiryTime' -Value $pause
    【解决方案2】:

    感谢 Ozymanduis 的建议。我试过了,效果很好。 可能 Windows 10 需要准确的时间格式来接受暂停更新功能并正常工作。但是,在按下暂停更新功能后,我查看了这些键所在的注册表。似乎在“按下按钮”期间创建了其他 REG 键。那些是

    PauseFeatureUpdatesStartTime (Where the time format is set on "now")
    
    PauseFeatureUpdatesEndTime (Where the time format is set on "in 35 days")
    
    PauseQualityUpdatesStartTime (Where the time format is set on "now")
    
    PauseQualityUpdatesEndTime (Where the time format is set on "in 35 days")
    

    所以我只是像这样将这些键添加到等式中

    $pause = (Get-Date).AddDays(35)
    $pause = $pause.ToUniversalTime().ToString( "yyyy-MM-ddTHH:mm:ssZ" )
    $pause_start = (Get-Date)
    $pause_start = $pause_start.ToUniversalTime().ToString( "yyyy-MM-ddTHH:mm:ssZ" )
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesExpiryTime' -Value $pause                                                                                        
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseFeatureUpdatesStartTime' -Value $pause_start
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseFeatureUpdatesEndTime' -Value $pause
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseQualityUpdatesStartTime' -Value $pause_start
    Set-itemproperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseQualityUpdatesEndTime' -Value $pause  
    

    现在我希望它真的会暂停这些更新。我记得几年前曾尝试过“暂停”REG 键功能,而不是“禁用 Windows 更新”功能,但不知何故,无论设置的日期如何,它都会在宽限期内恢复这些更新,这有点烦人。我会及时通知你。

    编辑:我在同一个 ps 文件中添加了 reg 条目以避免自动更新功能像这样启动,

    New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' -Force
    New-ItemProperty -Path  'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' -Name 'NoAutoUpdate' -PropertyType DWORD -Value 1  
    

    当我们的机器被部署时,我会尽快这样做,以避免开始更新过程(因为如果它这样做了,你几乎就完蛋了),现在它似乎工作得很好:

    【讨论】:

    • 那么这个设置真的会暂停更新吗?
    • 嗨。实际上感谢您的评论,它提醒我在“编辑”部分添加一小段 pf 代码,现在它似乎工作得很好(Windows 10 20H2 等)
    【解决方案3】:

    根据 Ozymanduis 的评论,可以做到这一点:

    $pause = (Get-Date).AddDays(35); $pause = $pause.ToUniversalTime().ToString( "yyyy-MM-ddTHH:mm:ssZ" ); Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesExpiryTime' -Value $pause
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多