Upload files to "Microsoft"

This commit is contained in:
Timur 2024-06-26 07:39:44 +00:00
parent 417227c003
commit 5aa62e0923

View 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