使用 powershell 暂停 Windows 11 更新

Posted

技术标签:

【中文标题】使用 powershell 暂停 Windows 11 更新【英文标题】:Pause Windows 11 updates with powershell 【发布时间】:2022-01-12 14:40:20 【问题描述】:

您好,我指的是用于将 Windows 10 更新暂停最多 35 天的 powershell 脚本here。

它指出 要通过 powershell 暂停 Windows 10 更新,请写下:

$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  

现在这在 Windows 11 中不起作用。有谁知道什么不起作用以及为什么?

【问题讨论】:

【参考方案1】:

好的,所以我去检查当我手动暂停更新时会发生什么。实际上,还添加了一个名为“PauseUpdatesStartTime”的键。 所以我用这个键尝试了powershell脚本,它工作了。现在更正后的脚本如下所示:

$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
Set-itemproperty -Path 'HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings' -Name 'PauseUpdatesStartTime' -Value $pause_start
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

要通过cmd执行ps脚本,我只需要这样写:

> powershell -executionpolicy unrestricted C:\path_to_my_script\pausewin11upd.ps1

【讨论】:

以上是关于使用 powershell 暂停 Windows 11 更新的主要内容,如果未能解决你的问题,请参考以下文章

暂停程序,直到 powershell 脚本完成

使用PowerShell操作Windows服务的命令小结

如何暂停powershell脚本,直到调试器附加

从PowerShell挂起或休眠

powershell 暂停脚本

从 powershell 下载文件时,Invoke-WebRequest 进度变得无响应/暂停