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]
