Removes the Poweshell Script Tracing directories, by strictly matching directories in Documents directory that match YYYYMMDD only.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #------------------------------------------------------------------------------------------------------------------------------------------------------------------ # Script: CleanupPowershellTracingDirectories.ps1 # # Created by metadataconsult@gmail.com, metadataconsulting.blogspot.ca, 2018 # # Function: # # Removes the Poweshell Script Tracing directories, by strictly matching directories in documents directory that match YYYYMMDD only. # # Warranty: # # The scripts are provided AS IS without warranty of any kind. # Metadata Consulting further disclaims all implied warranties including, # without limitation, any implied warranties of merchantability or of fitness for # a particular purpose. The entire risk arising out of the use or performance of # the scripts and documentation remains with you. # Metadata Consulting, its authors, or anyone else involved in the creation, production, or # delivery of the scripts be liable for any damages whatsoever (including, # without limitation, damages for loss of business profits, business interruption, # loss of business information, or other pecuniary loss) arising out of the use # of or inability to use the scripts or documentation, even if # has been advised of the possibility of such damages. #------------------------------------------------------------------------------------------------------------------------------------------------------------------ $docfolder = "${Env:USERPROFILE}\Documents" Write-Host "Listing All Poweshell Script Tracing Directories in folder $docfolder" -ForegroundColor Cyan # https://stackoverflow.com/questions/4766845/yyyymmdd-date-format-regular-expression-to-validate-a-date-in-c-sharp-net - mactches leap years as well Get-ChildItem $docfolder | Where {$_.Name -Match "^(?:(?:(?:(?:(?:[13579][26]|[2468][048])00)|(?:[0-9]{2}(?:(?:[13579][26])|(?:[2468][048]|0[48]))))(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:0[1-9]|1[0-9]|2[0-9]))))|(?:[0-9]{4}(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:[01][0-9]|2[0-8])))))$"} $title = "Delete Poweshell Script Tracing Directories?" $message = "Choose default Exit,`nor DELETE Selected Powershell Script Tracing Directories,`nor DELETE SILENT All Powershell Script Tracing Directories.`nThis is permanent delete, there is no recycle-bin recovery." $msg1 = "Exit" $msg2 = "DELETE Selected Script Tracing Directories forever, no recycle bin!" $msg3 = "DELETE All Silently Script Tracing Directories forever, no recycle bin!" $one = New-Object System.Management.Automation.Host.ChoiceDescription "&Exit", $msg1 $two = New-Object System.Management.Automation.Host.ChoiceDescription "&Delete Selected", $msg2 $three = New-Object System.Management.Automation.Host.ChoiceDescription "&Delete Silent", $msg3 $options = [System.Management.Automation.Host.ChoiceDescription[]]($one,$two, $three) $result = $host.ui.PromptForChoice($title, $message, $options, 0) Write-Host "" switch ($result) { 0 {Write-Host "You selected `n1. $msg1" -ForegroundColor Cyan;} 1 {Write-Host "You selected `n2. $msg2" -ForegroundColor Cyan;} 2 {Write-Host "You selected `n3. $msg3" -ForegroundColor Cyan;} default {Write-Host "You choose something else. Exiting"; exit} } if ($result -eq 1) { Get-ChildItem $docfolder | Where {$_.Name -Match "^(?:(?:(?:(?:(?:[13579][26]|[2468][048])00)|(?:[0-9]{2}(?:(?:[13579][26])|(?:[2468][048]|0[48]))))(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:0[1-9]|1[0-9]|2[0-9]))))|(?:[0-9]{4}(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:[01][0-9]|2[0-8])))))$"} | Remove-Item -ErrorAction Stop Write-Host "Deleted selected Poweshell Script Tracing Directories in folder $docfolder" -ForegroundColor Yellow Write-Host "Done" -ForegroundColor Cyan } elseif ($result -eq 2) { Get-ChildItem $docfolder | Where {$_.Name -Match "^(?:(?:(?:(?:(?:[13579][26]|[2468][048])00)|(?:[0-9]{2}(?:(?:[13579][26])|(?:[2468][048]|0[48]))))(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:0[1-9]|1[0-9]|2[0-9]))))|(?:[0-9]{4}(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:[01][0-9]|2[0-8])))))$"} | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue Write-Host "Deleted all Poweshell Script Tracing Directories in folder $docfolder, errors silently ignored." -ForegroundColor Yellow Write-Host "Done" -ForegroundColor Cyan } |
No comments:
Post a Comment