Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Limpeza de Disco do Windows
- # Autor: @tasaycar
- # Data: 08/2024
- # Versão: 0.8
- # 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.
- # Leitura adicional:
- # Windows Cleanup Automation > https://learn.microsoft.com/pt-br/troubleshoot/windows-server/backup-and-storage/automating-disk-cleanup-tool
- # Powershell > https://learn.microsoft.com/pt-br/powershell/
- param ([switch]$Elevated)
- function CheckAdmin {
- $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
- $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
- }
- if ((CheckAdmin) -eq $false) {
- if ($elevated) {
- }
- else {
- if ($IsCoreCLR) { $PowerShellCmdLine = "pwsh.exe" } else { $PowerShellCmdLine = "powershell.exe" }
- $CommandLine = "-noprofile -ExecutionPolicy Bypass -File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments + ' -Elevated'
- Start-Process "$PSHOME\$PowerShellCmdLine" -Verb RunAs -ArgumentList $CommandLine
- }
- Exit
- }
- $host.ui.RawUI.WindowTitle = "§ Setor de TI § Estamos aqui pra ajudar"
- $host.ui.RawUI.BackgroundColor = "Black"
- $host.ui.RawUI.ForegroundColor = "Gray"
- Clear-Host
- $Before = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object `
- @{ Name = "Computador"; Expression = { $_.SystemName } }, `
- @{ Name = "Disco"; Expression = { $_.DeviceID } }, `
- @{ Name = "Capacidade (GB)"; Expression = { "{0:N1}" -f ($_.Size / 1gb) } }, `
- @{ Name = "Livre (GB)"; Expression = { "{0:N1}" -f ($_.Freespace / 1gb) } }, `
- @{ Name = "% Livre"; Expression = { "{0:P1}" -f ($_.FreeSpace / $_.Size) } } |
- Format-Table -AutoSize | Out-String
- $hostname = $env:COMPUTERNAME
- $LogDate = Get-Date -Format "dd-MM-yyyy-HHmm"
- $Limpezalog = "$env:HomeDrive\Limpeza-de-Arquivos_$hostname-$LogDate.log"
- Start-Transcript -Path "$LimpezaLog"
- Write-Host -ForegroundColor White "`nA faxina está sendo executada pelo usuário:" -NoNewline; Write-Host -ForegroundColor Red " $env:USERNAME`n"
- Write-Host -ForegroundColor White "É essencial que você saiba o que está fazendo, pois a limpeza é " -NoNewline; Write-Host -ForegroundColor Red "IRREVERSÍVEL`n"
- Write-Host -ForegroundColor White "Esse script obtém a lista de usuários e itera sobre eles, removendo entre outros:"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Cache de navegadores"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Firefox"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Chrome"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Edge"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Chromium"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " Opera"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Arquivos antigos(60+) da pasta Downloads de todos os usuários"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Arquivos temporários"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Cache do Windows Update"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Arquivos de log da System32"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Lixeira"
- Write-Host -ForegroundColor Red " -" -NoNewline; Write-Host -ForegroundColor White " - Arquivos temporários do Windows"
- 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"
- Start-Sleep -s 5
- Function limpeza {
- $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)
- $DelDownloadsDate = (Get-Date).AddDays(-60)
- $System32LogDate = (Get-Date).AddMonths(-2)
- $CleanBin = $(Write-Host "") + $(Write-Host "Deseja APAGAR os arquivos das lixeiras de TODOS OS USUÁRIOS? (S/N) " -ForegroundColor DarkRed -NoNewline; Read-Host)
- $WUfoldersize = (Get-ChildItem "$env:windir\SoftwareDistribution" -Recurse | Measure-Object Length -s).sum / 1Gb
- if ($WUfoldersize -gt 1.5) {
- Write-Host "Tamanho da pasta Windows Update: " ("{0:N2} GB" -f $WUFoldersize)
- $CleanWU = $(Write-Host "") + $(Write-Host "Deseja apagar o conteúdo das pastas Software Distribution e Windows Update? (S/N) " -ForegroundColor DarkRed -NoNewline; Read-Host)
- }
- Write-Host ""
- Write-Host -ForegroundColor Blue "Obtendo lista de usuários`n"
- $Users = Get-ChildItem "C:\Users" | Select-Object Name
- $users = $Users.Name
- foreach ($user in $users) {
- Write-Host -ForegroundColor Cyan " - $user"
- }
- Write-Host ""
- Write-Host -ForegroundColor Green "Faxina iniciada...`n"
- Start-Sleep -s 2
- $host.ui.RawUI.WindowTitle = "§ Setor de TI § Retirando o lixo do mar ;)"
- Write-Host "CACHE DE NAVEGADORES"
- Write-Host -ForegroundColor DarkGray " CACHE FIREFOX"
- Foreach ($user in $Users) {
- if (Test-Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles") {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\thumbnails\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cookies.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\webappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\chromeappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\OfflineCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- Write-Host -ForegroundColor DarkGray " CACHE CHROME"
- Foreach ($user in $Users) {
- if (Test-Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data") {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- $Profiles = Get-ChildItem -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data" | Select-Object Name | Where-Object Name -Like "Profile*"
- foreach ($Account in $Profiles) {
- $Account = $Account.Name
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- }
- Write-Host -ForegroundColor DarkGray " CACHE IE / EDGE"
- Foreach ($user in $Users) {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\INetCache\* " -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WebCache\* " -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- Write-Host -ForegroundColor DarkGray " CACHE EDGE CHROMIUM"
- taskkill /F /IM msedge.exe
- Foreach ($user in $Users) {
- if (Test-Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data") {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\Default\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- $Profiles = Get-ChildItem -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data" | Select-Object Name | Where-Object Name -Like "Profile*"
- foreach ($Account in $Profiles) {
- $Account = $Account.Name
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cookies" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- #Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Edge\User Data\$Account\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- }
- Write-Host -ForegroundColor DarkGray " CACHE CHROMIUM"
- Foreach ($user in $Users) {
- if (Test-Path "C:\Users\$user\AppData\Local\Chromium") {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\GPUCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Pepper Data" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Application Cache" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- Write-Host -ForegroundColor DarkGray " CACHE OPERA`n"
- Foreach ($user in $Users) {
- if (Test-Path "C:\Users\$user\AppData\Local\Opera Software") {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Opera Software\Opera Stable\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- $host.ui.RawUI.WindowTitle = "§ Setor de TI § Removendo arquivos temporários"
- Write-Host "PASTAS TEMPORARIAS"
- Write-Host -ForegroundColor DarkGray " Removendo arquivos e pastas temporarias de TODOS usuarios"
- Foreach ($user in $Users) {
- Remove-Item -Path "C:\Users\$user\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\AppCache\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "C:\Users\$user\AppData\Local\CrashDumps\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- }
- Write-Host -ForegroundColor DarkGray " Removendo arquivos e pastas temporarias do Windows"
- Foreach ($user in $Users) {
- Remove-Item -Path "C:\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "$env:windir\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "$env:windir\Logs\CBS\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Remove-Item -Path "$env:ProgramData\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- $Sys32Files = Get-ChildItem -Path "$env:windir\System32\LogFiles" | Where-Object { ($_.name -like "*.log") -and ($_.lastwritetime -lt $System32LogDate) }
- foreach ($File in $Sys32Files) {
- Remove-Item -Path "$env:windir\System32\LogFiles\$($file.name)" -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- if (Test-Path "C:\swsetup") {
- Remove-Item -Path "C:\swsetup" -Force -ErrorAction SilentlyContinue #-Verbose
- }
- if ($DeleteOldDownloads -eq 'S') {
- Write-Host -ForegroundColor DarkGray " Removendo arquivos antigos da pasta Downloads dos usuários`n"
- Foreach ($user in $Users) {
- $UserDownloads = "C:\Users\$user\Downloads"
- $OldFiles = Get-ChildItem -Path "$UserDownloads\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelDownloadsDate
- foreach ($file in $OldFiles) {
- Remove-Item -Path "$UserDownloads\$file" -Force -ErrorAction SilentlyContinue #-Verbose
- }
- }
- }
- if ($CleanWU -eq 'S') {
- Write-Host -ForegroundColor Blue "Reiniciando serviço Windows Update e deletando a pasta C:\Windows\SoftwareDistribution`n"
- try {
- Stop-Service -Name wuauserv
- }
- catch {
- $ErrorMessage = $_.Exception.Message
- Write-Warning "$ErrorMessage"
- }
- Remove-Item "$env:windir\SoftwareDistribution" -Recurse -Force -ErrorAction SilentlyContinue #-Verbose
- Start-Sleep -s 3
- try {
- Start-Service -Name wuauserv
- }
- catch {
- $ErrorMessage = $_.Exception.Message
- Write-Warning "$ErrorMessage"
- }
- Write-Host -ForegroundColor Red "ATENÇÃO`n"
- Write-Host -ForegroundColor Blue "Certifique-se de verificar novamente as atualizações após uma reinicialização `n"
- }
- if ($Cleanbin -eq 'S') {
- Write-Host "ESVAZIANDO LIXEIRAS"
- $ErrorActionPreference = 'SilentlyContinue'
- $RecycleBin = "C:\`$Recycle.Bin"
- $BinFolders = Get-ChildItem $RecycleBin -Directory -Force
- Foreach ($Folder in $BinFolders) {
- $objSID = New-Object System.Security.Principal.SecurityIdentifier ($folder)
- try {
- $objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
- Write-Host -Foreground DarkGray " USUARIO $objUser"
- }
- catch {
- $objUser = $objSID.Value
- Write-Host -Foreground Blue -Background Black "$objUser"
- }
- $Files = @()
- if ($PSVersionTable.PSVersion -Like "*2*") {
- $Files = Get-ChildItem $Folder.FullName -Recurse -Force
- }
- else {
- $Files = Get-ChildItem $Folder.FullName -File -Recurse -Force
- $Files += Get-ChildItem $Folder.FullName -Directory -Recurse -Force
- }
- $FileTotal = $Files.Count
- for ($i = 1; $i -le $Files.Count; $i++) {
- $FileName = Select-Object -InputObject $Files[($i - 1)]
- Write-Progress -Activity "Limpando a lixeira" -Status "Tentando deletar arquivo [$i / $FileTotal]: $FileName" -PercentComplete (($i / $Files.count) * 100) -Id 1
- Remove-Item -Path $Files[($i - 1)].FullName -Recurse -Force
- }
- Write-Progress -Activity "Limpeza da lixeira" -Status "Concluida" -Completed -Id 1
- }
- }
- if ($CleanWU -eq 'S') {
- Write-Host -ForegroundColor Cyan "`nCertifique-se de verificar novamente as atualizações após uma reinicialização `n"
- }
- $host.ui.RawUI.WindowTitle = "§ Setor de TI § Executando Limpeza de Disco do Windows"
- $SageSet = "StateFlags0099"
- $Base = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\"
- $Locations = @(
- "Active Setup Temp Folders"
- "BranchCache"
- "Content Index Cleaner"
- "D3D Shader Cache"
- "Delivery Optimization Files"
- "Device Driver Packages"
- "Diagnostic Data Viewer database files"
- "Downloaded Program Files"
- "Download Program Files"
- "GameNewsFiles"
- "GameStatisticsFiles"
- "GameUpdateFiles"
- "Language Pack"
- "Memory Dump Files"
- "Offline Pages Files"
- "Old ChkDsk Files"
- "Previous Installations"
- "RetailDemo Offline Content"
- "Service Pack Cleanup"
- "Setup Log Files"
- "System error memory dump files"
- "System error minidump files"
- "Temporary Files"
- "Temporary Setup Files"
- "Thumbnail Cache"
- "Update Cleanup"
- "Upgrade Discarded Files"
- "User file versions"
- "Windows Defender"
- "Windows Error Reporting Files"
- "Windows ESD installation files"
- "Windows Upgrade Log Files"
- )
- ForEach ($Location in $Locations)
- {
- Set-ItemProperty -Path $($Base + $Location) -Name $SageSet -Type DWORD -Value 2 -ErrorAction SilentlyContinue | Out-Null
- }
- cleanmgr /sagerun:99
- Write-Host -ForegroundColor Blue "`nExecutando Limpeza de Disco do Windows, não feche nem cancele nenhuma janela"
- Write-Host -ForegroundColor Blue "A Limpeza de Disco esta em execução, por favor aguarde..."
- $cleanmgrcheck = Get-Process -Name cleanmgr -ErrorAction SilentlyContinue
- while ($null -ne $cleanmgrcheck) {
- Start-Sleep -Seconds 1
- $cleanmgrcheck = Get-Process -Name cleanmgr -ErrorAction SilentlyContinue
- }
- ForEach ($Location in $Locations)
- {
- Remove-ItemProperty -Path $($Base + $Location) -Name $SageSet -Force -ErrorAction SilentlyContinue | Out-Null
- }
- }
- limpeza
- $After = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object `
- @{ Name = "Nome"; Expression = { $_.SystemName } }, `
- @{ Name = "Disco"; Expression = { $_.DeviceID } }, `
- @{ Name = "Capacidade (GB)"; Expression = { "{0:N1}" -f ($_.Size / 1gb) } }, `
- @{ Name = "Livre (GB)"; Expression = { "{0:N1}" -f ($_.Freespace / 1gb) } }, `
- @{ Name = "% Livre"; Expression = { "{0:P1}" -f ($_.FreeSpace / $_.Size) } } |
- Format-Table -AutoSize | Out-String
- Write-Host -ForegroundColor Blue "Salvando e abrindo arquivo de log.`n"
- Write-Host -ForegroundColor Blue "Salvando e abrindo arquivo de log.`n"
- Write-Host "Espaço em disco`n"
- Write-Host -ForegroundColor Red "Antes: $Before"
- Write-Host -ForegroundColor Green "Depois: $After"
- Start-Sleep -s 15
- Write-Host -ForegroundColor Blue "Todas as tarefas foram finalizadas!`n"
- Invoke-Item $Limpezalog
- $host.ui.RawUI.WindowTitle = "§ Setor de TI § Faxina finalizada. Essa janela agora pode ser fechada."
- Stop-Transcript
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement