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

Jen*_*sis 3 windows powershell

我想使用powershell脚本来关闭Windows更新服务并使用PowerShell自动更新Windows 10.我已经四处寻找,但命令并没有完全关闭.

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

services> windows update>禁用Windows Update>更改设置>从不检查更新

fra*_*kon 9

编辑 2020-07-30:

前一种解决方案(如下所示)仅部分有效:它不会禁用 WindowsUpdate/sihpostreboot 服务,因为 Microsoft 正在与此类指南作斗争。

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

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

在此输入图像描述


原来的答案:

该脚本基于凯末尔的回答。

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

推荐执行:

  1. 安装所有挂起的更新,以便您处于“您的设备是最新的”状态。
  2. 以管理员身份运行以下 PowerShell 脚本:
    清除主机

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

    如果(测试路径-路径$WindowsUpdatePath){
        删除项目-路径$WindowsUpdatePath-Recurse
    }

    新项目 $WindowsUpdatePath -Force
    新项目 $AutoUpdatePath -Force

    Set-ItemProperty -路径 $AutoUpdatePath -名称 NoAutoUpdate -值 1

    获取ScheduledTask -TaskPath“\Microsoft\Windows\WindowsUpdate\”| 禁用计划任务

    采取 /FC:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator /A /R
    icacls C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator /grant Administrators:F /T

    获取ScheduledTask -TaskPath“\Microsoft\Windows\UpdateOrchestrator\”| 禁用计划任务

    停止服务 wuauserv
    设置服务 wuauserv -StartupType 已禁用

    # 我们再次禁用 WindowsUpdate 文件夹,因为 wuauserv 服务可能同时启用它
    获取ScheduledTask -TaskPath“\Microsoft\Windows\WindowsUpdate\”| 禁用计划任务

    写入输出“所有 Windows 更新均已禁用”

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

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


小智 5

我发现这些信息你可以尝试一下

电源外壳

 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}
       Default{Exit}
}

$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
}
Run Code Online (Sandbox Code Playgroud)