Upload files to "Microsoft"
This commit is contained in:
parent
417227c003
commit
5aa62e0923
129
Microsoft/Run_Disk_Cleanup.ps1
Normal file
129
Microsoft/Run_Disk_Cleanup.ps1
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# Script by Timur@0x01337.com
|
||||
# Date: 2023-11-24
|
||||
<#
|
||||
.DESCRIPTION
|
||||
Runs Disk Cleanup utility. Disk Cleanup will remove all types of junk files for all current logged users without user input.
|
||||
|
||||
Requires administrator privileges.
|
||||
|
||||
.PARAMETER help
|
||||
Displays a detailed usage description of this script.
|
||||
|
||||
.EXAMPLE
|
||||
PS> .\Run-Disk-Cleanup.ps1
|
||||
|
||||
.EXAMPLE
|
||||
PS> .\Run-Disk-Cleanup.ps1 -help
|
||||
#>
|
||||
|
||||
# Getting command line parameters
|
||||
param (
|
||||
[parameter(Mandatory = $false)][switch]$help
|
||||
)
|
||||
|
||||
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
|
||||
$isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
if (!$isAdmin) {
|
||||
Write-Error "This script requires administrator privileges"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Writing help message
|
||||
if ($help) {
|
||||
get-help $MyInvocation.MyCommand.Path -Full
|
||||
exit 0
|
||||
}
|
||||
|
||||
$registryKeyPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches'
|
||||
# 2004 is just a magic number
|
||||
$propertyName = "StateFlags2004"
|
||||
#all availble clean options, ref: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cleanmgr
|
||||
$allCleanOptions = "Active Setup Temp Folders", "D3D Shader Cache", "Delivery Optimization Files",
|
||||
"Diagnostic Data Viewer database files", "Downloaded Program Files", "Internet Cache Files",
|
||||
"Language Pack", "Old ChkDsk Files", "Recycle Bin", "RetailDemo Offline Content",
|
||||
"Setup Log Files", "System error memory dump files", "System error minidump files",
|
||||
"Temporary Files", "Thumbnail Cache", "Update Cleanup", "User file versions",
|
||||
"Windows Defender", "Windows Error Reporting Files", "Temporary Setup Files"
|
||||
|
||||
foreach ($option in $allCleanOptions) {
|
||||
$path = "$registryKeyPath\$option"
|
||||
|
||||
if (!(Test-Path $path)) {
|
||||
Write-Host "Create registry key path ($path)"
|
||||
New-Item -Path $path -Force
|
||||
}
|
||||
try {
|
||||
Get-ItemProperty -Path $path -Name $propertyName -ErrorAction Stop | Out-Null
|
||||
}
|
||||
catch {
|
||||
Write-Host "Creating property ($propertyName) in ($path)"
|
||||
New-ItemProperty -Path $path -Name $propertyName -PropertyType DWORD -Value 2
|
||||
}
|
||||
try {
|
||||
Set-ItemProperty -Path $path -Name $propertyName -Value 2
|
||||
}
|
||||
catch {
|
||||
Write-Error $_
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
$command = "cleanmgr"
|
||||
# 2004 is just a magic number
|
||||
$arguments = "/sagerun:2004"
|
||||
|
||||
$computerName = "$($env:COMPUTERNAME)"
|
||||
if (!$computerName) {
|
||||
Write-Error "Can't get computer name"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$enabledUsers = @()
|
||||
$users = Get-LocalUser
|
||||
foreach ($user in $users) {
|
||||
if ($user.Enabled) {
|
||||
Write-Host "$($user.Name) found"
|
||||
$enabledUsers += $user.Name
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($enabledUser in $enabledUsers) {
|
||||
$userId = "$computerName\$enabledUser"
|
||||
$taskName = "cleanmgr-$enabledUser"
|
||||
|
||||
$task = $null
|
||||
try {
|
||||
$task = Get-ScheduledTaskInfo -TaskName $taskName -ErrorAction Stop
|
||||
}
|
||||
catch {
|
||||
|
||||
}
|
||||
|
||||
if (!$task) {
|
||||
Write-Host "Create task '$taskName' for $userId"
|
||||
try {
|
||||
$action = New-ScheduledTaskAction -Execute $command -Argument $arguments
|
||||
$principal = New-ScheduledTaskPrincipal -UserId $userId
|
||||
$task = New-ScheduledTask -Action $action -Principal $principal
|
||||
Register-ScheduledTask -TaskName $taskName -InputObject $task -ErrorAction Stop
|
||||
}
|
||||
catch {
|
||||
#aovid access denied error
|
||||
Write-Host "No access to create '$taskName' for $userId"
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Running $command $arguments on user($userId)"
|
||||
|
||||
try {
|
||||
Start-ScheduledTask -TaskName $taskName -ErrorAction Stop
|
||||
}
|
||||
catch {
|
||||
#aovid access denied error
|
||||
Write-Host "No access to edit '$taskName' for $userId"
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
exit 0
|
||||
Loading…
Reference in a new issue