Advertisement
igorfradi

Auto-Remove Temporary Data

Mar 4th, 2020
3,145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Function Cleanup {
  2.     <#
  3.     Descrição do Script:
  4.     Este Script limpa os arquivos temporários em pastas do Windows, na lixeira dos usuários
  5.     e em pastas do spotify e cache do chrome.
  6.  
  7.     A execução do script não danifica o desempenho das máquinas.
  8.     #>
  9.     function global:Write-Verbose ( [string]$Message )
  10.    
  11.     # checa a varíavel $VerbosePreference e liga -Verbose
  12.     { if ( $VerbosePreference -ne 'SilentlyContinue' )
  13.     { Write-Host " $Message" -ForegroundColor 'Yellow' } }
  14.    
  15.     $VerbosePreference = "Continue"
  16.     $DaysToDelete = 0
  17.     $LogDate = $(((get-date).ToUniversalTime()).ToString("dd-MM-yyyy--hh-mm-ss"))
  18.     $objShell = New-Object -ComObject Shell.Application  
  19.     $objFolder = $objShell.Namespace(0xA)
  20.     $ErrorActionPreference = "silentlycontinue"
  21.                        
  22.     ## Cria os caminhos caso não existam e começa a salvar o log no caminho especificado
  23.     New-Item -Path 'C:\Scripts\Infra\Logs' -ItemType Directory
  24.     Start-Transcript -Path C:\Scripts\Infra\Logs\$LogDate.log
  25.    
  26.     ## Limpa o código da tela
  27.     Clear-Host
  28.    
  29.     $size = Get-ChildItem C:\Users\* -Include *.iso, *.vhd -Recurse -ErrorAction SilentlyContinue |  
  30.     Sort Length -Descending |  
  31.     Select-Object Name,
  32.     @{Name="Size (GB)";Expression={ "{0:N2}" -f ($_.Length / 1GB) }}, Directory |
  33.     Format-Table -AutoSize | Out-String
  34.    
  35.     $Before = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName,
  36.     @{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } },
  37.     @{ Name = "Size (GB)" ; Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
  38.     @{ Name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) } },
  39.     @{ Name = "PercentFree" ; Expression = {"{0:P1}" -f( $_.FreeSpace / $_.Size ) } } |
  40.     Format-Table -AutoSize | Out-String                      
  41.                        
  42.     ## Para o serviço do Windows Update
  43.     Get-Service -Name wuauserv | Stop-Service -Force -Verbose -ErrorAction SilentlyContinue
  44.    
  45.     ## Deleta o conteúdo da pasta Software Distribution, do Windows.
  46.     Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  47.  
  48.     ## Deleta o conteúdo da pasta CCMcache, do Windows.
  49.     Get-ChildItem "C:\Windows\ccmcache\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  50.  
  51.     ## Deleta o conteúdo da pasta CCMsetup, do Windows.
  52.     Get-ChildItem "C:\Windows\ccmsetup\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  53.  
  54.     ## Deleta o conteúdo da pasta Installer, do Windows
  55.     Get-ChildItem "C:\Windows\Installer\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue | remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  56.    
  57.     ## Deleta o conteúdo da pasta Temp, do Windows || Respeitando a contagem de dias da variável DaysToDelete
  58.     Get-ChildItem "C:\Windows\Temp\*" -Recurse -Force -Verbose -ErrorAction SilentlyContinue |
  59.     Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete)) } |
  60.     remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  61.  
  62.     ## Deleta o conteúdo da pasta Spotify, em todos os usuários || Respeitando a contagem de dias da variável DaysToDelete
  63.     Get-ChildItem "C:\users\*\AppData\Local\Spotify\Data\*" -Recurse -Force -ErrorAction SilentlyContinue |
  64.     Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete))} |
  65.     remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  66.  
  67.     ## Deleta o conteúdo da pasta Cache, do chrome de todos os usuários  || Respeitando a contagem de dias da variável DaysToDelete  
  68.     Get-ChildItem "C:\users\*\AppData\Local\Google\Chrome\User Data\Default\Cache*" -Recurse -Force -ErrorAction SilentlyContinue |
  69.     Where-Object { ($_.CreationTime -lt $(Get-Date).AddDays(-$DaysToDelete))} |
  70.     remove-item -force -Verbose -recurse -ErrorAction SilentlyContinue  
  71.                        
  72.     ## Deleta o conteúdo da pasta Temporary Internet Files, de todos os usuários  || Respeitando a contagem de dias da variável DaysToDelete  
  73.     Get-ChildItem "C:\users\*\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" `
  74.     -Recurse -Force -Verbose -ErrorAction SilentlyContinue |
  75.     Where-Object {($_.CreationTime -le $(Get-Date).AddDays(-$DaysToDelete))} |
  76.     remove-item -force -recurse -ErrorAction SilentlyContinue  
  77.                        
  78.     ## Limpa os logs do IIS, se possível
  79.     Get-ChildItem "C:\inetpub\logs\LogFiles\*" -Recurse -Force -ErrorAction SilentlyContinue |
  80.     Where-Object { ($_.CreationTime -le $(Get-Date).AddDays(-60)) } |
  81.     Remove-Item -Force -Verbose -Recurse -ErrorAction SilentlyContinue  
  82.                    
  83.     ## Limpa a lixeira
  84.     $objFolder.items() | ForEach-Object { Remove-Item $_.path -ErrorAction Ignore -Force -Verbose -Recurse }  
  85.    
  86.     ## Inicia de novo o serviço do Windows Update
  87.     ##Get-Service -Name wuauserv | Start-Service -Verbose
  88.    
  89.     $After =  Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName,
  90.     @{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } },
  91.     @{ Name = "Size (GB)" ; Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
  92.     @{ Name = "FreeSpace (GB)" ; Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) } },
  93.     @{ Name = "PercentFree" ; Expression = {"{0:P1}" -f( $_.FreeSpace / $_.Size ) } } |
  94.     Format-Table -AutoSize | Out-String
  95.    
  96.     ## Envia informações sobre antes&depois do script
  97.    
  98.     Hostname ; Get-Date | Select-Object DateTime
  99.     Write-Verbose "Before: $Before"
  100.     Write-Verbose "After: $After"
  101.     Write-Verbose $size
  102.     ## Limpeza de arquivos temporários realizada com sucesso!
  103.     Stop-Transcript } Cleanup
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement