You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2022中WinGet运行失败及批量执行方案咨询

定期执行winget升级命令的可行方案

1. 修正GPO计划任务适配Server 2022

Server 2022对winget的系统账户运行限制更严,调整以下配置即可解决:

  • 在GPO计划任务的环境变量中,给PATH添加winget的安装路径通配:C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe
  • 勾选「以最高权限运行」,并在设置里开启「不管用户是否登录都要运行」
  • 改用完整路径调用winget,避免系统账户找不到可执行文件:
    for /f "delims=" %%i in ('dir /b "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe"') do set WINGET_PATH="C:\Program Files\WindowsApps\%%i\winget.exe"
    %WINGET_PATH% install --id Microsoft.DesktopAppInstaller --force --silent
    %WINGET_PATH% upgrade --all --accept-package-agreements --accept-source-agreements --silent --force
    
  • 给系统账户授予C:\Program Files\WindowsApps目录的读取和执行权限

2. 域控制器远程PowerShell执行

直接从域控批量远程执行命令,无需在目标服务器建任务:

  • 先通过GPO开启所有域成员服务器的WinRM:计算机配置>管理模板>Windows组件>Windows远程管理(WinRM)>WinRM服务>允许自动配置WinRM
  • 在域控上创建PowerShell脚本WingetUpgrade.ps1:
    # 获取所有目标服务器
    $servers = Get-ADComputer -Filter {OperatingSystem -like "*Windows Server 2019*" -or OperatingSystem -like "*Windows Server 2022*"} | Select-Object -ExpandProperty Name
    
    foreach ($server in $servers) {
        Invoke-Command -ComputerName $server -ScriptBlock {
            # 定位winget路径
            $wingetDir = Get-ChildItem "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe" | Select-Object -Last 1 -ExpandProperty FullName
            $wingetExe = Join-Path $wingetDir "winget.exe"
            
            # 更新winget自身
            & $wingetExe install --id Microsoft.DesktopAppInstaller --force --silent
            # 执行全量升级
            & $wingetExe upgrade --all --accept-package-agreements --accept-source-agreements --silent --force
        } -Credential (Get-Credential "DOMAIN\你的域管理员账户")
    }
    
  • 在域控上创建计划任务,用域管理员账户定期运行这个脚本

3. 修复GPO计算机启动脚本

之前启动脚本失败大概率是路径或权限问题,调整后即可使用:

  • 写一个批处理脚本WingetUpgrade.bat,放到域控的NETLOGON共享(比如\\你的域名\NETLOGON\):
    @echo off
    :: 自动定位最新的winget路径
    for /f "delims=" %%i in ('dir /b "C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe"') do set WINGET_DIR=%%i
    set WINGET_PATH="C:\Program Files\WindowsApps\%WINGET_DIR%\winget.exe"
    
    :: 更新winget自身
    %WINGET_PATH% install --id Microsoft.DesktopAppInstaller --force --silent
    :: 执行全量升级
    %WINGET_PATH% upgrade --all --accept-package-agreements --accept-source-agreements --silent --force
    
  • 在GPO的「计算机配置>脚本>启动」里添加这个脚本路径
  • 给系统账户授予C:\Program Files\WindowsApps的读取执行权限,确保能访问winget目录

4. 结合LAPS部署计划任务

如果GPO无法传递普通账户凭据,用LAPS获取本地管理员密码来创建任务:

  • 先在域内部署LAPS,让每台服务器自动管理本地管理员密码
  • 在域控上写PowerShell脚本批量创建计划任务:
    $servers = Get-ADComputer -Filter {OperatingSystem -like "*Windows Server 2019*" -or OperatingSystem -like "*Windows Server 2022*"}
    
    foreach ($server in $servers) {
        # 获取LAPS管理的本地管理员密码
        $lapsInfo = Get-AdmPwdPassword -ComputerName $server.Name
        $localAdminCred = New-Object System.Management.Automation.PSCredential("$($server.Name)\Administrator", ($lapsInfo.Password | ConvertTo-SecureString -AsPlainText -Force))
        
        # 创建任务动作和触发器
        $taskAction = New-ScheduledTaskAction -Execute "cmd.exe" -Argument '/c "for /f ""delims="" %%i in ('"'dir /b C:\Program Files\WindowsApps\Microsoft.DesktopAppInstaller_*_x64__8wekyb3d8bbwe'"') do ""C:\Program Files\WindowsApps\%%i\winget.exe"" upgrade --all --accept-package-agreements --accept-source-agreements --silent --force"'
        $taskTrigger = New-ScheduledTaskTrigger -Daily -At 2:00AM
        $taskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
        $taskPrincipal = New-ScheduledTaskPrincipal -UserId "$($server.Name)\Administrator" -RunLevel Highest
        
        # 远程注册计划任务
        Register-ScheduledTask -TaskName "WingetAutoUpgrade" -Action $taskAction -Trigger $taskTrigger -Settings $taskSettings -Principal $taskPrincipal -Credential $localAdminCred -ComputerName $server.Name -Force
    }
    
  • 定期运行这个脚本,确保任务保持有效

内容的提问来源于stack exchange,提问作者user3912750

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:05:07