使用PowerShell关闭Windows更新服务和自动更新Windows 10

Posted

技术标签:

【中文标题】使用PowerShell关闭Windows更新服务和自动更新Windows 10【英文标题】:Turn off windows update service & auto updates windows 10 using powershell 【发布时间】:2017-11-17 05:20:45 【问题描述】:

我想使用 powershell 脚本关闭 windows 更新服务并使用 powershell 自动更新 windows 10。我四处搜索,但命令并没有完全关闭其中任何一个。

我现在在不在网络上的设备上手动执行此操作,因此无法部署任何组策略:

服务> Windows 更新> 禁用 Windows 更新 > 更改设置 > 从不检查更新

【问题讨论】:

【参考方案1】:

我找到了这个信息你可以试试

Powershell

 Clear-Host

Write-Host "0 -> Change setting in Windows Update app (default)"
Write-Host "1 -> Never check for updates (not recommended)"
Write-Host "2 -> Notify for download and notify for install"
Write-Host "3 -> Auto download and notify for install"
Write-Host "4 -> Auto download and schedule the install"

Write-Host "Enter any character to exit"
Write-Host
switch(Read-Host "Choose Window Update Settings")
       0 $UpdateValue = 0
       1 $UpdateValue = 1
       2 $UpdateValue = 2
       3 $UpdateValue = 3
       4 $UpdateValue = 4
       DefaultExit


$WindowsUpdatePath = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\"
$AutoUpdatePath = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"

If(Test-Path -Path $WindowsUpdatePath) 
    Remove-Item -Path $WindowsUpdatePath -Recurse



If ($UpdateValue -gt 0) 
    New-Item -Path $WindowsUpdatePath
    New-Item -Path $AutoUpdatePath


If ($UpdateValue -eq 1) 
    Set-ItemProperty -Path $AutoUpdatePath -Name NoAutoUpdate -Value 1


If ($UpdateValue -eq 2) 
    Set-ItemProperty -Path $AutoUpdatePath -Name NoAutoUpdate -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name AUOptions -Value 2
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallDay -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallTime -Value 3


If ($UpdateValue -eq 3) 
    Set-ItemProperty -Path $AutoUpdatePath -Name NoAutoUpdate -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name AUOptions -Value 3
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallDay -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallTime -Value 3


If ($UpdateValue -eq 4) 
    Set-ItemProperty -Path $AutoUpdatePath -Name NoAutoUpdate -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name AUOptions -Value 4
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallDay -Value 0
    Set-ItemProperty -Path $AutoUpdatePath -Name ScheduledInstallTime -Value 3

【讨论】:

谢谢。我正在使用平板电脑并尝试使用另一个不起作用的脚本。但是这个做到了。我已经成功申请了300片=)【参考方案2】:

编辑 2020-07-30:

下面的前一个解决方案只能部分起作用:它不会禁用 WindowsUpdate/sihpostreboot 服务,因为微软正在与这样的指南作斗争。

什么是完全有效的:(如何禁用其余部分)

按照以下原始解决方案的步骤进行操作(完成时会出现一些错误) 下载解压Microsoft PSTools 使用 psexec.exe 在位置以管理员身份启动命令行 使用 SYSTEM 权限启动任务计划程序:psexec -i -d -s mmc taskschd.msc 手动禁用其余未禁用的更新任务


原始答案:

此脚本基于 Kemal 的回答。

改进之处在于它还禁用了 WindowsUpdate 和 UpdateOrchestrator 文件夹中的任务无法在任务计划程序中手动禁用。此外,它还会禁用 Windows 更新服务。

推荐执行:

    安装所有待处理的更新,使您处于“您的设备是最新的”状态。 以管理员身份运行以下 PowerShell 脚本:
清除主机 $WindowsUpdatePath = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\" $AutoUpdatePath = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" 如果(测试路径 -Path $WindowsUpdatePath) 删除项目 -Path $WindowsUpdatePath -Recurse 新项目 $WindowsUpdatePath -Force 新项目 $AutoUpdatePath -Force Set-ItemProperty -Path $AutoUpdatePath -Name NoAutoUpdate -Value 1 Get-ScheduledTask -TaskPath "\Microsoft\Windows\WindowsUpdate\" |禁用计划任务 takeown /F C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator /A /R icacls C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator /grant Administrators:F /T Get-ScheduledTask -TaskPath "\Microsoft\Windows\UpdateOrchestrator\" |禁用计划任务 停止服务 wuauserv 设置服务 wuauserv -StartupType 已禁用 # 我们再次禁用 WindowsUpdate 文件夹,因为 wuauserv 服务可能同时启用了它 Get-ScheduledTask -TaskPath "\Microsoft\Windows\WindowsUpdate\" |禁用计划任务 写输出“所有 Windows 更新都被禁用”

注意:如果 WindowsUpdate 文件夹或 UpdateOrchestrator 文件夹不存在,脚本可能会显示执行错误。

注意 2:在某些 Microsoft 安装程序(如 .Net Framework 安装程序、Visual Studio 安装程序...)运行后,您可能需要再次运行该脚本,因为它们会再次启用更新。

【讨论】:

【参考方案3】:

用于禁用 Windows 10 的自动更新 运行 --> services.msc --> Windows Update --> 属性 --> 启动类型 --> 禁用

http://optimistpower.blogspot.in/2017/12/how-to-disable-windows-auto-update-in.html

【讨论】:

【参考方案4】:

如果有人偶然发现这个问题只是试图暂时禁用 Windows 10 中的更新,请查找设置:“设置为按流量计费的连接” 并将其打开。我知道这并没有解决 OP 的问题,但是在搜索如何关闭更新时,这个问题是最先出现的问题之一。

【讨论】:

【参考方案5】:

有更简单的方法可以一次性摆脱所有网络霸占应用程序的讨厌活动:使用本地机器的 sock 代理。

如今,大多数 Windows 应用程序都内置了自己的云。当您启动 Windows 时,它们都使用自己的服务器。手动将它们一一阻止并不容易。

所以我采取了这种方式,一次将它们全部屏蔽,并且我只允许某些应用在需要时上网。

策略:阻止Windows机器上网,然后使用SSH动态端口转发建立隧道,将所有互联网请求转发到本地网络上的Linux SSH服务器。由于我没有给出系统级别的internet代理设置,Windows box像小蚂蚁一样无法在微软上找到它的大王后,因为它被屏蔽了。

第 1 步:阻止 Windows 框的所有 Internet 访问。实现这一点的方法很多:我修改路由器以阻止 Windows 框访问互联网。

第 2 步:在您的 Windows 机器上安装 ssh 客户端。我在我的 Windows 框中安装了 open-ssh 客户端。你需要一个 Linux 机器才能让 ssh 服务器在同一网络中运行。我使用的是群晖 diskstaion NAS 系统。它整天运行,所以我所有的本地网络都将它用作代理服务器。你也可以简单地在你的 windows 盒子里安装一个 vertual linux 盒子,用它做很多事情。

第 3 步:打开一个本地端口并将所有发送到它的流量通过隧道传输到 linux 机器。我们使用1080端口。执行ssh命令:

ssh -D 1080 <ssh-username>@<linuxbox_address>

您可以做更多的事情来简化 ssh 登录,例如使用 ssh 密钥等。

第 4 步:现在您的 windows box 的 1080 端口通过 linux box 向互联网开放。你只需要告诉每个应用程序如何使用这个端口。例如,您希望 Windows 框中的 Chrome 浏览器可以上网,没问题。更改 chrome 启动命令行选项(右键单击 chrome 图标,更改命令行,使其看起来像这样:

.../chrome.exe --proxy-server=SOCKS4://127.0.0.1:1080

你可以走了。注意:请勿更改系统的 Internet 代理设置。因为系统代理设置被所有程序共享。您不希望所有应用程序都可以访问互联网。这就是我们一路走到这里的原因。

现在我觉得 Windows 盒子又可以使用了。

【讨论】:

这是一个非常有趣的答案!但请注意:即使没有 Internet 连接,这也不能解决 Windows 更新服务的 CPU 利用率问题。我无法想象这些服务试图做什么,但它们确实减慢了慢速 PC。【参考方案6】:

有几种方法可以停止 Windows 更新。

    根据我的经验,这是最好的方法停止 Windows 更新服务

作为 Windows 10 核心的核心,Windows 更新实际上只是另一个 Windows 进程,因此可以通过以下简单步骤停止它:

    打开运行命令 (Win + R),在其中输入:services.msc 并回车 从出现的服务列表中找到 Windows Update 服务并打开它并 停下来。 在“启动类型”中(在“常规”选项卡下)将其更改为“已禁用” 重启 要重新启用 Windows 更新,只需重复这四个步骤,但将启动类型更改为“自动”。

这里附上图片是如何做到的。

    转到服务> Windows 更新> 禁用 Windows 更新 > 更改设置 > 从不检查更新。

【讨论】:

以上是关于使用PowerShell关闭Windows更新服务和自动更新Windows 10的主要内容,如果未能解决你的问题,请参考以下文章

powershell 远程重启/关闭服务器

使用 powershell 暂停 Windows 11 更新

powershell 使用PowerShell获取Windows更新版本

Windows下载更新powershell

我如何在 Windows 中使用 cmd/powershell 卸载受密码保护的应用程序 [关闭]

powershell 使用BoxStarter运行Windows更新