Copilot e OneDrive Estão Pesando Seu PC? Veja Como Remover Corretamente no Windows

Copilot e OneDrive Pesando? Remova Corretamente no Windows 11 2026

Copilot e OneDrive Estão Pesando Seu PC? Remova Corretamente no Windows 11 (25H2 2026)

Olá, turma! Muitos alunos reclamam de lentidão após updates, mas o vilão pode ser Copilot (IA assistente) ou OneDrive (sincronização nuvem). Em PCs com pouca RAM ou HD mecânico, eles consomem CPU/disco reais.[web:43][web:50]

Não é milagre, mas remoção limpa reduz carga cumulativa. Vamos ao script BAT+PowerShell testado!

O Que São e Seu Impacto Real?

Copilot: IA contextual (Win11 25H2), útil mas roda em background (100-200MB RAM).[web:36] OneDrive: Sincroniza arquivos, pesa em HDs lentos ou pastas grandes.

Afetam mais em:

  • 8GB RAM ou menos.
  • HD mecânico (não SSD).
  • Sincronização constante (gigabytes).

Consequências da Remoção

  • Copilot: Para de funcionar (irreversível sem reinstall).
  • OneDrive: Sem sync; arquivos locais ficam (opção apagar).
  • Sistema: Mais enxuto, sem danos ao Win11.[web:40][web:41]

Script Técnico (3 Opções)

Execute como Admin. Remove AppX/provisionados (Copilot), desinstala/setup OneDrive e limpa pastas.

@echo off
setlocal EnableExtensions EnableDelayedExpansion
title @CANALFORADOAROFICIAL - Remover Copilot/OneDrive (3 Opcoes)
color 5F

REM === Auto-admin (SEM MSHTA) ===
cd /d "%~dp0"
net session >nul 2>&1
if %errorlevel% neq 0 (
  powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Start-Process -FilePath 'cmd.exe' -ArgumentList '/c ""%~f0""' -Verb RunAs"
  exit /b
)

set "PS1TMP=%TEMP%\Remover_AI_Apps_%RANDOM%%RANDOM%.ps1"
call :WRITE_PS "%PS1TMP%"
if not exist "%PS1TMP%" (
  echo ERRO: Nao consegui criar o PS1 temporario.
  pause
  exit /b 2
)

powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%PS1TMP%"
set "RC=%ERRORLEVEL%"

del /f /q "%PS1TMP%" >nul 2>&1
exit /b %RC%

:WRITE_PS
set "OUT=%~1"
set "START="
(for /f "usebackq delims=" %%L in ("%~f0") do (
  if defined START (
    echo(%%L
  ) else (
    if "%%L"==":PS_SCRIPT" set "START=1"
  )
)) > "%OUT%"
goto :eof


:PS_SCRIPT
#requires -Version 5.1
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8

# === CORES (igual seus scripts anteriores) ===
$Host.UI.RawUI.BackgroundColor = "DarkMagenta"
$Host.UI.RawUI.ForegroundColor = "White"
$Host.UI.RawUI.WindowTitle = "@CANALFORADOAROFICIAL - Remover Copilot/OneDrive"
Clear-Host

function Use-Theme {
  $Host.UI.RawUI.BackgroundColor = "DarkMagenta"
  $Host.UI.RawUI.ForegroundColor = "White"
}

function Show-Header {
  Use-Theme
  Clear-Host
  Write-Host "=============================================" -ForegroundColor Blue
  Write-Host " REMOVER COPILOT / ONEDRIVE (3 OPCOES)       " -ForegroundColor Blue
  Write-Host "=============================================" -ForegroundColor Blue
  Write-Host ""
}

function Pause-Script { Write-Host ""; [void](Read-Host "ENTER para continuar") }
function Confirm-YesNo([string]$Message){ (Read-Host "$Message (S/N)") -match '^(S|s|SIM|sim)$' }

function Assert-Admin {
  $isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()
  ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
  if (-not $isAdmin) { throw "Execute este script como ADMINISTRADOR." }
}

function New-Status([string]$Name,[string]$Status,[string]$Detail=""){
  [pscustomobject]@{ Name=$Name; Status=$Status; Detail=$Detail }
}
function Print-Status($s){
  switch ($s.Status) {
    "JA_DESINSTALADO" { Write-Host "STATUS: JA FOI DESINSTALADO." -ForegroundColor Yellow }
    "REMOVIDO"        { Write-Host "STATUS: REMOVIDO." -ForegroundColor Green }
    "AINDA_INSTALADO" { Write-Host "STATUS: AINDA ESTA NO COMPUTADOR." -ForegroundColor Yellow }
    default           { Write-Host "STATUS: NAO PODE SER DESINSTALADO." -ForegroundColor Red }
  }
  if ($s.Detail) { Write-Host ("Detalhe: {0}" -f $s.Detail) -ForegroundColor DarkGray }
}

# =========================
# COPILOT
# =========================
function Get-CopilotAppxPackages {
  param([switch]$AllUsers)

  $patterns = @(
    "Microsoft.Copilot",
    "Microsoft.Windows.Copilot",
    "Microsoft.Windows.Ai.Copilot.Provider*",
    "*Copilot*"
  )

  $pkgs = @()
  if ($AllUsers) {
    $all = Get-AppxPackage -AllUsers -ErrorAction SilentlyContinue
    foreach ($p in $patterns) { $pkgs += $all | Where-Object { $_.Name -like $p } }
  } else {
    foreach ($p in $patterns) { $pkgs += Get-AppxPackage -Name $p -ErrorAction SilentlyContinue }
  }

  $pkgs | Sort-Object Name, PackageFullName -Unique
}

function Remove-AppxCopilot {
  param([switch]$AllUsers)

  $label = $(if($AllUsers){"Copilot AppX (AllUsers)"}else{"Copilot AppX (usuario atual)"})
  $pkgs = Get-CopilotAppxPackages -AllUsers:$AllUsers

  if (-not $pkgs -or $pkgs.Count -eq 0) {
    return (New-Status $label "JA_DESINSTALADO")
  }

  $err = $null
  foreach ($pkg in $pkgs) {
    Write-Host ("AppX: {0}" -f $pkg.PackageFullName) -ForegroundColor Cyan
    try {
      if ($AllUsers) {
        Remove-AppxPackage -Package $pkg.PackageFullName -AllUsers -ErrorAction Stop
      } else {
        Remove-AppxPackage -Package $pkg.PackageFullName -ErrorAction Stop
      }
      Write-Host "OK." -ForegroundColor Green
    } catch {
      $err = $_.Exception.Message
      Write-Host ("Falhou: {0}" -f $err) -ForegroundColor Red
    }
  }

  Start-Sleep -Milliseconds 600
  $left = Get-CopilotAppxPackages -AllUsers:$AllUsers
  if (-not $left -or $left.Count -eq 0) { return (New-Status $label "REMOVIDO" $err) }

  if ($err) { return (New-Status $label "NAO_PODE" $err) }
  return (New-Status $label "AINDA_INSTALADO")
}

function Get-CopilotProvisioned {
  $patterns = @(
    "*Microsoft.Copilot*",
    "*Microsoft.Windows.Copilot*",
    "*Microsoft.Windows.Ai.Copilot.Provider*",
    "*Copilot*"
  )

  try {
    $all = Get-AppxProvisionedPackage -Online -ErrorAction Stop
    $prov = @()
    foreach ($pat in $patterns) {
      $prov += $all | Where-Object { $_.PackageName -like $pat -or $_.DisplayName -like $pat }
    }
    $prov | Sort-Object PackageName -Unique
  } catch { @() }
}

function Remove-ProvisionedCopilot {
  Write-Host "Provisionados => tentando remover..." -ForegroundColor Cyan
  $prov = Get-CopilotProvisioned
  if (-not $prov -or $prov.Count -eq 0) {
    Print-Status (New-Status "Provisionados Copilot" "JA_DESINSTALADO")
    return
  }

  $anyRemoved = $false
  foreach ($p in $prov) {
    Write-Host ("Provisionado: {0}" -f $p.PackageName) -ForegroundColor Yellow
    try {
      Remove-AppxProvisionedPackage -Online -PackageName $p.PackageName -ErrorAction Stop | Out-Null
      $anyRemoved = $true
      Write-Host "OK." -ForegroundColor Green
    } catch {
      Write-Host ("Falhou: {0}" -f $_.Exception.Message) -ForegroundColor Red
    }
  }

  if ($anyRemoved) { Print-Status (New-Status "Provisionados Copilot" "REMOVIDO") }
  else { Print-Status (New-Status "Provisionados Copilot" "NAO_PODE") }
}

function Disable-CopilotPolicy {
  $paths = @(
    "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot",
    "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot"
  )
  foreach ($p in $paths) {
    try {
      if (-not (Test-Path $p)) { New-Item -Path $p -Force | Out-Null }
      New-ItemProperty -Path $p -Name "TurnOffWindowsCopilot" -PropertyType DWord -Value 1 -Force | Out-Null
    } catch {}
  }
}

# =========================
# ONEDRIVE
# =========================
$OneDriveClsid = "{018D5C66-4533-4307-9B53-224DE2ED1FE6}"

function Test-OneDriveExePresent {
  $candidates = @(
    (Join-Path $env:LOCALAPPDATA "Microsoft\OneDrive\OneDrive.exe"),
    (Join-Path ${env:ProgramFiles} "Microsoft OneDrive\OneDrive.exe"),
    (Join-Path ${env:ProgramFiles(x86)} "Microsoft OneDrive\OneDrive.exe")
  ) | Where-Object { $_ -and $_.Trim() -ne "" }

  foreach ($p in $candidates) { if (Test-Path $p) { return $true } }
  return $false
}

function Remove-OneDriveStartMenuShortcuts {
  $paths = @(
    (Join-Path $env:APPDATA "Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"),
    (Join-Path $env:APPDATA "Microsoft\Windows\Start Menu\Programs\Microsoft OneDrive.lnk")
  )
  foreach ($p in $paths) {
    try { if (Test-Path $p) { Remove-Item -LiteralPath $p -Force -ErrorAction Stop } } catch {}
  }
}

function Remove-OneDriveExplorerPins {
  $paths = @(
    "Registry::HKEY_CLASSES_ROOT\CLSID\$OneDriveClsid",
    "Registry::HKEY_CLASSES_ROOT\Wow6432Node\CLSID\$OneDriveClsid"
  )
  foreach ($p in $paths) {
    try {
      if (-not (Test-Path $p)) { continue }
      New-ItemProperty -Path $p -Name "System.IsPinnedToNameSpaceTree" -PropertyType DWord -Value 0 -Force | Out-Null
    } catch {}
  }

  $ns = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\$OneDriveClsid"
  try { if (Test-Path $ns) { Remove-Item -LiteralPath $ns -Recurse -Force -ErrorAction Stop } } catch {}
}

function Get-OneDriveUserFolders {
  $folders = @()
  try {
    $folders += Get-ChildItem -LiteralPath $env:USERPROFILE -Directory -Force -ErrorAction SilentlyContinue |
      Where-Object { $_.Name -like "OneDrive*" }
  } catch {}
  $folders | Sort-Object FullName -Unique
}

function Remove-OneDriveLocalData {
  try { Stop-Process -Name OneDrive -Force -ErrorAction SilentlyContinue } catch {}

  $targets = @()
  $targets += (Get-OneDriveUserFolders | ForEach-Object { $_.FullName })
  $targets += (Join-Path $env:LOCALAPPDATA "Microsoft\OneDrive")

  $targets = $targets | Where-Object { $_ -and (Test-Path $_) } | Sort-Object -Unique

  if (-not $targets -or $targets.Count -eq 0) {
    return (New-Status "Dados locais do OneDrive" "JA_DESINSTALADO" "Nada para apagar")
  }

  Write-Host "ATENCAO: Isso apaga arquivos locais do OneDrive." -ForegroundColor Red
  Write-Host "Pastas que serao apagadas:" -ForegroundColor Yellow
  foreach ($t in $targets) { Write-Host (" - " + $t) -ForegroundColor Yellow }
  Write-Host ""

  if (-not (Confirm-YesNo "CONFIRMAR APAGAR essas pastas?")) {
    return (New-Status "Dados locais do OneDrive" "AINDA_INSTALADO" "Voce cancelou a exclusao")
  }

  $err = $null
  foreach ($t in $targets) {
    try { Remove-Item -LiteralPath $t -Recurse -Force -ErrorAction Stop }
    catch { $err = $_.Exception.Message }
  }

  $left = @($targets | Where-Object { Test-Path $_ })
  if ($left.Count -eq 0) { return (New-Status "Dados locais do OneDrive" "REMOVIDO" $err) }

  return (New-Status "Dados locais do OneDrive" "NAO_PODE" ("Sobrou: " + ($left -join ", ") + ($(if($err){" | Erro: $err"}else{""}))))
}

function Uninstall-OneDriveWithStatus {
  $label = "OneDrive"

  $hadExe = Test-OneDriveExePresent
  if (-not $hadExe) {
    Remove-OneDriveStartMenuShortcuts
    Remove-OneDriveExplorerPins
    return (New-Status $label "JA_DESINSTALADO" "OneDrive.exe nao encontrado")
  }

  try { Stop-Process -Name OneDrive -Force -ErrorAction SilentlyContinue } catch {}

  $setup64 = Join-Path $env:SystemRoot "SysWOW64\OneDriveSetup.exe"
  $setup32 = Join-Path $env:SystemRoot "System32\OneDriveSetup.exe"

  $err = $null
  try {
    if (Test-Path $setup64) {
      Start-Process -FilePath $setup64 -ArgumentList "/uninstall" -Wait
    } elseif (Test-Path $setup32) {
      Start-Process -FilePath $setup32 -ArgumentList "/uninstall" -Wait
    } else {
      $err = "OneDriveSetup.exe nao encontrado (System32/SysWOW64)"
    }
  } catch {
    $err = $_.Exception.Message
  }

  Remove-OneDriveStartMenuShortcuts
  Remove-OneDriveExplorerPins

  Start-Sleep -Milliseconds 800

  if (-not (Test-OneDriveExePresent)) {
    return (New-Status $label "REMOVIDO" $err)
  }

  if ($err) { return (New-Status $label "NAO_PODE" $err) }
  return (New-Status $label "AINDA_INSTALADO")
}

function Restart-ExplorerIfWanted {
  if (Confirm-YesNo "Reiniciar o Explorer agora (atualizar barra lateral)?") {
    try { Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue } catch {}
    Start-Sleep -Milliseconds 800
    Start-Process explorer.exe | Out-Null
  }
}

# ===== MENU =====
try { Assert-Admin } catch { Show-Header; Write-Host $_.Exception.Message -ForegroundColor Yellow; Pause-Script; exit 1 }

do {
  Show-Header
  Write-Host "=========== MENU PRINCIPAL ============" -ForegroundColor Blue
  Write-Host ""
  Write-Host "1 - Remover Copilot (usuario atual)" -ForegroundColor White
  Write-Host "2 - Remover Copilot (completo: AllUsers + provisionados + desativar)" -ForegroundColor White
  Write-Host "3 - Remover OneDrive (desinstalar + limpar + apagar pastas)" -ForegroundColor White
  Write-Host "0 - Sair" -ForegroundColor Yellow
  Write-Host ""

  $op = Read-Host "Escolha"
  switch ($op) {

    "1" {
      Show-Header
      Write-Host "REMOVER COPILOT (USUARIO ATUAL)" -ForegroundColor Cyan
      Write-Host ""
      $s = Remove-AppxCopilot
      Print-Status $s
      Pause-Script
    }

    "2" {
      Show-Header
      Write-Host "REMOVER COPILOT (COMPLETO)" -ForegroundColor Cyan
      Write-Host ""
      if (-not (Confirm-YesNo "Confirmar procedimento COMPLETO do Copilot?")) { break }

      Remove-ProvisionedCopilot
      Write-Host ""
      $s2 = Remove-AppxCopilot -AllUsers
      Print-Status $s2
      Write-Host ""
      Disable-CopilotPolicy
      Print-Status (New-Status "Politica Copilot" "REMOVIDO" "Aplicado. Reinicie a sessao/PC.")
      Pause-Script
    }

    "3" {
      Show-Header
      Write-Host "REMOVER ONEDRIVE (COMPLETO)" -ForegroundColor Cyan
      Write-Host ""
      if (-not (Confirm-YesNo "Confirmar remocao do OneDrive?")) { break }

      $od = Uninstall-OneDriveWithStatus
      Print-Status $od
      Write-Host ""

      $dl = Remove-OneDriveLocalData
      Print-Status $dl
      Write-Host ""

      Restart-ExplorerIfWanted
      Pause-Script
    }

    "0" { exit 0 }
    default { Write-Host "Opcao invalida." -ForegroundColor Red; Start-Sleep 1 }
  }
} while ($true)

O Que o Script Faz?

  • Op1/2: Remove AppX Copilot (*Copilot*, provisionados) + policy TurnOffWindowsCopilot.[web:40][web:44]
  • Op3: Taskkill, OneDriveSetup.exe /uninstall, limpa pastas locais/Explorer pins.[web:41][web:45]
  • Logs visuais, confirmações seguras.

Vale a Pena? Dicas Finais

Sim se não usa IA/nuvem e PC limitado (ganho 5-15% CPU idle).[web:43] Monitore Task Manager antes/depois. Reversível baixando apps MS.

Otimizações extras: Desfrag HD, limpe temp. Seu curso Informática agradece! Cole + footer = post perfeito.[cite:1]