Advertisement
thiagoaycar

faxinao.ps1

Jan 10th, 2025 (edited)
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Limpeza de Disco do Windows
  2.  
  3. # Autor: @tasaycar
  4. # Data: 08/2024
  5. # Versão: 0.8
  6.  
  7. # Descrição: Script para limpeza de disco do Windows, removendo cache de navegadores, lixeira, arquivos antigos da pasta Downloads, cache do Windows Update, arquivos de log da System32 e outros arquivos temporários.
  8.  
  9. # Leitura adicional:
  10. # Windows Cleanup Automation > https://learn.microsoft.com/pt-br/troubleshoot/windows-server/backup-and-storage/automating-disk-cleanup-tool
  11. # Powershell > https://learn.microsoft.com/pt-br/powershell/
  12.  
  13.  
  14. param ([switch]$Elevated)
  15. function CheckAdmin {
  16.     $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
  17.     $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
  18. }
  19.  
  20. if ((CheckAdmin) -eq $false) {
  21.     if ($elevated) {
  22.     }
  23.     else {
  24.         if ($IsCoreCLR) { $PowerShellCmdLine = "pwsh.exe" } else { $PowerShellCmdLine = "powershell.exe" }
  25.         $CommandLine = "-noprofile -ExecutionPolicy Bypass -File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments + ' -Elevated'
  26.         Start-Process "$PSHOME\$PowerShellCmdLine" -Verb RunAs -ArgumentList $CommandLine
  27.     }
  28.     Exit
  29. }
  30.  
  31. $host.ui.RawUI.WindowTitle = "§ Setor de TI § Estamos aqui pra ajudar"
  32. $host.ui.RawUI.BackgroundColor = "Black"
  33. $host.ui.RawUI.ForegroundColor = "Gray"
  34. Clear-Host
  35.  
  36.  
  37. $Before = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object `
  38. @{ Name = "Computador"; Expression = { $_.SystemName } }, `
  39. @{ Name = "Disco"; Expression = { $_.DeviceID } }, `
  40. @{ Name = "Capacidade (GB)"; Expression = { "{0:N1}" -f ($_.Size / 1gb) } }, `
  41. @{ Name = "Livre (GB)"; Expression = { "{0:N1}" -f ($_.Freespace / 1gb) } }, `
  42. @{ Name = "% Livre"; Expression = { "{0:P1}" -f ($_.FreeSpace / $_.Size) } } |
  43. Format-Table -AutoSize | Out-String
  44.  
  45. $hostname = $env:COMPUTERNAME
  46. $LogDate = Get-Date -Format "dd-MM-yyyy-HHmm"
  47. $Limpezalog = "$env:HomeDrive\Limpeza-de-Arquivos_$hostname-$LogDate.log"
  48. Start-Transcript -Path "$LimpezaLog"
  49.  
  50. Write-Host -ForegroundColor White "`nA faxina está sendo executada pelo usuário:" -NoNewline; Write-Host -ForegroundColor Red " $env:USERNAME`n"
  51. Write-Host -ForegroundColor White "É essencial que você saiba o que está fazendo, pois a limpeza é " -NoNewline; Write-Host -ForegroundColor Red "IRREVERSÍVEL`n"
  52. Write-Host -ForegroundColor White "Esse script obtém a lista de usuários e itera sobre eles, removendo entre outros:"
  53. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White " Cache de navegadores"
  54. Write-Host -ForegroundColor Red "    -" -NoNewline; Write-Host -ForegroundColor White " Firefox"
  55. Write-Host -ForegroundColor Red "    -" -NoNewline; Write-Host -ForegroundColor White " Chrome"
  56. Write-Host -ForegroundColor Red "    -" -NoNewline; Write-Host -ForegroundColor White " Edge"
  57. Write-Host -ForegroundColor Red "    -" -NoNewline; Write-Host -ForegroundColor White " Chromium"
  58. Write-Host -ForegroundColor Red "    -" -NoNewline; Write-Host -ForegroundColor White " Opera"
  59. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Arquivos antigos(60+) da pasta Downloads de todos os usuários"
  60. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Arquivos temporários"
  61. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Cache do Windows Update"
  62. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Arquivos de log da System32"
  63. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Lixeira"
  64. Write-Host -ForegroundColor Red "  -" -NoNewline; Write-Host -ForegroundColor White "  - Arquivos temporários do Windows"
  65.  
  66. Write-Host -ForegroundColor Yellow "`nA execução irá começar em 5 segundos, caso deseje cancelar, pressione " -NoNewline; Write-Host -ForegroundColor Red " `b[CTRL+C]`b`n"
  67. Start-Sleep -s 5
  68.  
  69. Function limpeza {
  70.     $DeleteOldDownloads = $(Write-Host "") + $(Write-Host "Deseja APAGAR os arquivos com mais de 60 dias da pasta Downloads de TODOS os usuários? (S/N) " -ForegroundColor DarkRed -NoNewline; Read-Host)
  71.     $DelDownloadsDate = (Get-Date).AddDays(-60)
  72.     $System32LogDate = (Get-Date).AddMonths(-2)
  73.     $CleanBin = $(Write-Host "") + $(Write-Host "Deseja APAGAR os arquivos das lixeiras de TODOS OS USUÁRIOS? (S/N) " -ForegroundColor DarkRed -NoNewline; Read-Host)
  74.     $WUfoldersize = (Get-ChildItem "$env:windir\SoftwareDistribution" -Recurse | Measure-Object Length -s).sum / 1Gb
  75.     if ($WUfoldersize -gt 1.5) {
  76.         Write-Host "Tamanho da pasta Windows Update: " ("{0:N2} GB" -f $WUFoldersize)
  77.         $CleanWU = $(Write-Host "") + $(Write-Host "Deseja apagar o conteúdo das pastas Software Distribution e Windows Update? (S/N) " -ForegroundColor DarkRed -NoNewline; Read-Host)
  78.     }
  79.  
  80.     Write-Host ""
  81.     Write-Host -ForegroundColor Blue "Obtendo lista de usuários`n"
  82.     $Users = Get-ChildItem "C:\Users" | Select-Object Name
  83.     $users = $Users.Name
  84.     foreach ($user in $users) {
  85.         Write-Host -ForegroundColor Cyan "  - $user"
  86.     }
  87.    
  88.     Write-Host ""
  89.     Write-Host -ForegroundColor Green "Faxina iniciada...`n"
  90.     Start-Sleep -s 2
  91.  
  92.     $host.ui.RawUI.WindowTitle = "§ Setor de TI § Retirando o lixo do mar ;)"
  93.    
  94.     Write-Host "CACHE DE NAVEGADORES"
  95.  
  96.     Write-Host -ForegroundColor DarkGray "  CACHE FIREFOX"
  97.     Foreach ($user in $Users) {
  98.         if (Test-Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles") {
  99.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  100.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  101.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\thumbnails\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  102.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cookies.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  103.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\webappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  104.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\chromeappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  105.             Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\OfflineCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  106.         }
  107.     }
  108.  
  109.     Write-Host -ForegroundColor DarkGray "  CACHE CHROME"
  110.     Foreach ($user in $Users) {
  111.         if (Test-Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data") {
  112.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  113.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  114.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  115.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  116.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  117.             Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  118.             $Profiles = Get-ChildItem -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data" | Select-Object Name | Where-Object Name -Like "Profile*"
  119.             foreach ($Account in $Profiles) {
  120.                 $Account = $Account.Name
  121.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  122.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  123.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  124.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  125.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  126.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  127.             }
  128.         }
  129.     }
  130.  
  131.     Write-Host -ForegroundColor DarkGray "  CACHE IE / EDGE"
  132.     Foreach ($user in $Users) {
  133.         Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  134.         Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\INetCache\* " -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  135.         Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WebCache\* " -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  136.     }
  137.  
  138.     Write-Host -ForegroundColor DarkGray "  CACHE EDGE CHROMIUM"
  139.     taskkill /F /IM msedge.exe
  140.     Foreach ($user in $Users) {
  141.         if (Test-Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data") {
  142.             Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  143.             Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  144.             Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  145.             $Profiles = Get-ChildItem -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data" | Select-Object Name | Where-Object Name -Like "Profile*"
  146.             foreach ($Account in $Profiles) {
  147.                 $Account = $Account.Name
  148.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  149.                 #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  150.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  151.                 #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  152.                 Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  153.                 #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  154.             }
  155.         }
  156.     }
  157.    
  158.     Write-Host -ForegroundColor DarkGray "  CACHE CHROMIUM"
  159.     Foreach ($user in $Users) {
  160.         if (Test-Path "C:\Users\$user\AppData\Local\Chromium") {
  161.             Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  162.             Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\GPUCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  163.             Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  164.             Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Pepper Data" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  165.             Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Application Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  166.         }
  167.     }
  168.    
  169.     Write-Host -ForegroundColor DarkGray "  CACHE OPERA`n"
  170.     Foreach ($user in $Users) {
  171.         if (Test-Path "C:\Users\$user\AppData\Local\Opera Software") {
  172.             Remove-Item -Path "C:\Users\$user\AppData\Local\Opera Software\Opera Stable\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  173.         }
  174.     }
  175.  
  176.     $host.ui.RawUI.WindowTitle = "§ Setor de TI § Removendo arquivos temporários"
  177.     Write-Host "PASTAS TEMPORARIAS"
  178.     Write-Host -ForegroundColor DarkGray "    Removendo arquivos e pastas temporarias de TODOS usuarios"
  179.     Foreach ($user in $Users) {
  180.         Remove-Item -Path "C:\Users\$user\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  181.         Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  182.         Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\AppCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  183.         Remove-Item -Path "C:\Users\$user\AppData\Local\CrashDumps\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  184.     }
  185.     Write-Host -ForegroundColor DarkGray "    Removendo arquivos e pastas temporarias do Windows"
  186.     Foreach ($user in $Users) {
  187.         Remove-Item -Path "C:\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  188.         Remove-Item -Path "$env:windir\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  189.         Remove-Item -Path "$env:windir\Logs\CBS\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  190.         Remove-Item -Path "$env:ProgramData\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  191.         $Sys32Files = Get-ChildItem -Path "$env:windir\System32\LogFiles" | Where-Object { ($_.name -like "*.log") -and ($_.lastwritetime -lt $System32LogDate) }
  192.         foreach ($File in $Sys32Files) {
  193.             Remove-Item -Path "$env:windir\System32\LogFiles\$($file.name)" -Force -ErrorAction SilentlyContinue #-Verbose
  194.         }
  195.     }
  196.  
  197.     if (Test-Path "C:\swsetup") {
  198.         Remove-Item -Path "C:\swsetup" -Force -ErrorAction SilentlyContinue #-Verbose
  199.     }
  200.  
  201.     if ($DeleteOldDownloads -eq 'S') {
  202.         Write-Host -ForegroundColor DarkGray "    Removendo arquivos antigos da pasta Downloads dos usuários`n"
  203.         Foreach ($user in $Users) {
  204.             $UserDownloads = "C:\Users\$user\Downloads"
  205.             $OldFiles = Get-ChildItem -Path "$UserDownloads\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelDownloadsDate
  206.             foreach ($file in $OldFiles) {
  207.                 Remove-Item -Path "$UserDownloads\$file" -Force -ErrorAction SilentlyContinue #-Verbose
  208.             }
  209.         }
  210.     }
  211.  
  212.     if ($CleanWU -eq 'S') {
  213.         Write-Host -ForegroundColor Blue "Reiniciando serviço Windows Update e deletando a pasta C:\Windows\SoftwareDistribution`n"
  214.         try {
  215.             Stop-Service -Name wuauserv
  216.         }
  217.         catch {
  218.             $ErrorMessage = $_.Exception.Message
  219.             Write-Warning "$ErrorMessage"
  220.         }
  221.         Remove-Item "$env:windir\SoftwareDistribution" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
  222.         Start-Sleep -s 3
  223.  
  224.         try {
  225.             Start-Service -Name wuauserv
  226.         }
  227.         catch {
  228.             $ErrorMessage = $_.Exception.Message
  229.             Write-Warning "$ErrorMessage"
  230.         }
  231.         Write-Host -ForegroundColor Red "ATENÇÃO`n"
  232.         Write-Host -ForegroundColor Blue "Certifique-se de verificar novamente as atualizações após uma reinicialização `n"
  233.     }
  234.  
  235.     if ($Cleanbin -eq 'S') {
  236.         Write-Host "ESVAZIANDO LIXEIRAS"
  237.         $ErrorActionPreference = 'SilentlyContinue'
  238.         $RecycleBin = "C:\`$Recycle.Bin"
  239.         $BinFolders = Get-ChildItem $RecycleBin -Directory -Force
  240.  
  241.         Foreach ($Folder in $BinFolders) {
  242.             $objSID = New-Object System.Security.Principal.SecurityIdentifier ($folder)
  243.             try {
  244.                 $objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
  245.                 Write-Host -Foreground DarkGray "  USUARIO $objUser"
  246.             }
  247.             catch {
  248.                 $objUser = $objSID.Value
  249.                 Write-Host -Foreground Blue -Background Black "$objUser"
  250.             }
  251.             $Files = @()
  252.  
  253.             if ($PSVersionTable.PSVersion -Like "*2*") {
  254.                 $Files = Get-ChildItem $Folder.FullName -Recurse -Force
  255.             }
  256.             else {
  257.                 $Files = Get-ChildItem $Folder.FullName -File -Recurse -Force
  258.                 $Files += Get-ChildItem $Folder.FullName -Directory -Recurse -Force
  259.             }
  260.  
  261.             $FileTotal = $Files.Count
  262.  
  263.             for ($i = 1; $i -le $Files.Count; $i++) {
  264.                 $FileName = Select-Object -InputObject $Files[($i - 1)]
  265.                 Write-Progress -Activity "Limpando a lixeira" -Status "Tentando deletar arquivo [$i / $FileTotal]: $FileName" -PercentComplete (($i / $Files.count) * 100) -Id 1
  266.                 Remove-Item -Path $Files[($i - 1)].FullName -Recurse -Force
  267.             }
  268.             Write-Progress -Activity "Limpeza da lixeira" -Status "Concluida" -Completed -Id 1
  269.         }
  270.     }
  271.    
  272.     if ($CleanWU -eq 'S') {
  273.         Write-Host -ForegroundColor Cyan "`nCertifique-se de verificar novamente as atualizações após uma reinicialização `n"
  274.     }
  275.  
  276.     $host.ui.RawUI.WindowTitle = "§ Setor de TI § Executando Limpeza de Disco do Windows"
  277.     $SageSet = "StateFlags0099"
  278.     $Base = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\"
  279.     $Locations = @(
  280.         "Active Setup Temp Folders"
  281.         "BranchCache"
  282.         "Content Index Cleaner"
  283.         "D3D Shader Cache"
  284.         "Delivery Optimization Files"
  285.         "Device Driver Packages"
  286.         "Diagnostic Data Viewer database files"
  287.         "Downloaded Program Files"
  288.         "Download Program Files"
  289.         "GameNewsFiles"
  290.         "GameStatisticsFiles"
  291.         "GameUpdateFiles"
  292.         "Language Pack"
  293.         "Memory Dump Files"
  294.         "Offline Pages Files"
  295.         "Old ChkDsk Files"
  296.         "Previous Installations"
  297.         "RetailDemo Offline Content"
  298.         "Service Pack Cleanup"
  299.         "Setup Log Files"
  300.         "System error memory dump files"
  301.         "System error minidump files"
  302.         "Temporary Files"
  303.         "Temporary Setup Files"
  304.         "Thumbnail Cache"
  305.         "Update Cleanup"
  306.         "Upgrade Discarded Files"
  307.         "User file versions"
  308.         "Windows Defender"
  309.         "Windows Error Reporting Files"
  310.         "Windows ESD installation files"
  311.         "Windows Upgrade Log Files"
  312.     )
  313.     ForEach ($Location in $Locations)
  314.     {
  315.         Set-ItemProperty -Path $($Base + $Location) -Name $SageSet -Type DWORD -Value 2 -ErrorAction SilentlyContinue | Out-Null
  316.     }
  317.    
  318.     cleanmgr /sagerun:99
  319.  
  320.     Write-Host -ForegroundColor Blue "`nExecutando Limpeza de Disco do Windows, não feche nem cancele nenhuma janela"
  321.     Write-Host -ForegroundColor Blue "A Limpeza de Disco esta em execução, por favor aguarde..."
  322.  
  323.     $cleanmgrcheck = Get-Process -Name cleanmgr -ErrorAction SilentlyContinue
  324.     while ($null -ne $cleanmgrcheck) {
  325.         Start-Sleep -Seconds 1
  326.         $cleanmgrcheck = Get-Process -Name cleanmgr -ErrorAction SilentlyContinue
  327.     }
  328.    
  329.     ForEach ($Location in $Locations)
  330.     {
  331.         Remove-ItemProperty -Path $($Base + $Location) -Name $SageSet -Force -ErrorAction SilentlyContinue | Out-Null
  332.     }
  333. }
  334.  
  335. limpeza
  336.  
  337. $After = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object `
  338. @{ Name = "Nome"; Expression = { $_.SystemName } }, `
  339. @{ Name = "Disco"; Expression = { $_.DeviceID } }, `
  340. @{ Name = "Capacidade (GB)"; Expression = { "{0:N1}" -f ($_.Size / 1gb) } }, `
  341. @{ Name = "Livre (GB)"; Expression = { "{0:N1}" -f ($_.Freespace / 1gb) } }, `
  342. @{ Name = "% Livre"; Expression = { "{0:P1}" -f ($_.FreeSpace / $_.Size) } } |
  343. Format-Table -AutoSize | Out-String
  344.  
  345. Write-Host -ForegroundColor Blue "Salvando e abrindo arquivo de log.`n"
  346. Write-Host -ForegroundColor Blue "Salvando e abrindo arquivo de log.`n"
  347.  
  348. Write-Host "Espaço em disco`n"
  349. Write-Host -ForegroundColor Red "Antes: $Before"
  350. Write-Host -ForegroundColor Green "Depois: $After"
  351.  
  352. Start-Sleep -s 15
  353.  
  354. Write-Host -ForegroundColor Blue "Todas as tarefas foram finalizadas!`n"
  355.  
  356. Invoke-Item $Limpezalog
  357. $host.ui.RawUI.WindowTitle = "§ Setor de TI § Faxina finalizada. Essa janela agora pode ser fechada."
  358. Stop-Transcript
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement