$apps = Get-ItemProperty `
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,`
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,`
HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName,DisplayVersion,Publisher,InstallLocation,InstallDate |
Where-Object {$_.DisplayName} | Sort-Object DisplayName
$html = "
Software Audit — $($apps.Count) apps — $(Get-Date -f 'yyyy-MM-dd HH:mm')
Name Version Publisher Install Date Path "
$apps|ForEach-Object{$html+="$($_.DisplayName) $($_.DisplayVersion) $($_.Publisher) $($_.InstallDate) $($_.InstallLocation) "}
$html+="
"
$out="$env:USERPROFILE\Desktop\Software_Audit_$(Get-Date -f 'yyyyMMdd').html"
$html|Out-File $out -Encoding UTF8
Start-Process $out
Write-Host "Saved: $out ($($apps.Count) apps)" -ForegroundColor Green
$dst = "Z:\Backup"
"WiFi","Drivers","WingetList" | ForEach-Object { New-Item "$dst\$_" -ItemType Directory -Force | Out-Null }
# Wi-Fi profiles including passwords
netsh wlan export profile folder="$dst\WiFi" key=clear
# All system drivers
Export-WindowsDriver -Online -Destination "$dst\Drivers"
# Winget app list (re-import after reinstall with: winget import -i apps.json)
winget export -o "$dst\WingetList\apps.json" --accept-source-agreements
Write-Host "Backup complete to $dst" -ForegroundColor Green
powercfg /batteryreport /output "$env:USERPROFILE\Desktop\battery_health.html"
Write-Host "Battery report saved to Desktop" -ForegroundColor Cyan
manage-bde -status C:
Write-Host "`nDisk Health:" -ForegroundColor Cyan
Get-PhysicalDisk | Select FriendlyName,MediaType,HealthStatus,@{N='Size GB';E={[math]::Round($_.Size/1GB,0)}} | Format-Table
Write-Host "CPU:" -ForegroundColor Cyan
Get-CimInstance Win32_Processor | Select Name,NumberOfCores,NumberOfLogicalProcessors | Format-List
Write-Host "RAM:" -ForegroundColor Cyan
Get-CimInstance Win32_PhysicalMemory | Select Manufacturer,@{N='GB';E={$_.Capacity/1GB}},Speed | Format-Table
$src = $env:USERPROFILE; $dst = "Z:\Backup\UserData"
New-Item $dst -ItemType Directory -Force | Out-Null
"Desktop","Documents","Pictures","Downloads","Music","Videos" | ForEach-Object {
Write-Host "Backing up: $_" -ForegroundColor Cyan
robocopy "$src\$_" "$dst\$_" /E /ZB /MT:16 /R:3 /W:5 /XA:SH /LOG+:"$dst\robocopy.log"
}
Write-Host "Backup complete. Log: $dst\robocopy.log" -ForegroundColor Green
Get-ChildItem $env:USERPROFILE -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {$_.Length -gt 1GB} | Sort-Object Length -Descending |
Select FullName,@{N='Size (GB)';E={[math]::Round($_.Length/1GB,2)}},LastWriteTime |
Format-Table -AutoSize
Stop-Service wuauserv,cryptSvc,bits,msiserver -Force -ErrorAction SilentlyContinue
Rename-Item "C:\Windows\SoftwareDistribution" "SoftwareDistribution.old" -EA SilentlyContinue
Rename-Item "C:\Windows\System32\catroot2" "catroot2.old" -EA SilentlyContinue
Start-Service wuauserv,cryptSvc,bits,msiserver
Write-Host "Update cache cleared. Open Windows Update and try again." -ForegroundColor Green
Write-Host "Step 1/3: DISM RestoreHealth (requires internet)..." -ForegroundColor Cyan
DISM /Online /Cleanup-Image /RestoreHealth
Write-Host "Step 2/3: SFC scan..." -ForegroundColor Cyan
sfc /scannow
Write-Host "Step 3/3: DISM component cleanup..." -ForegroundColor Cyan
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
Write-Host "All repairs complete. Reboot recommended." -ForegroundColor Green
irm christitus.com/win | iex
Stop-Service spooler -Force
Remove-Item "$env:SystemRoot\System32\spool\PRINTERS\*" -Force -Recurse -EA SilentlyContinue
Start-Service spooler
Write-Host "Print spooler cleared and restarted." -ForegroundColor Green
ipconfig /flushdns
nbtstat -R
netsh int ip reset
netsh winsock reset
netsh advfirewall reset
Write-Host "Network stack reset complete. Rebooting in 15 seconds..." -ForegroundColor Yellow
Start-Sleep 15; Restart-Computer -Force
New-Item -Path "$env:USERPROFILE\Desktop\GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}" -ItemType Directory -Force
Write-Host "God Mode folder created on Desktop!" -ForegroundColor Green
Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" AllowTelemetry 0 -Type DWord -Force -EA SilentlyContinue
'DiagTrack','dmwappushservice','WerSvc','WMPNetworkSvc','RemoteRegistry' | ForEach-Object {
Stop-Service $_ -Force -EA SilentlyContinue
Set-Service $_ -StartupType Disabled -EA SilentlyContinue
Write-Host "Disabled: $_" -ForegroundColor Green
}
Write-Host "Telemetry killed." -ForegroundColor Green
$count = 0
wevtutil el | ForEach-Object { try { wevtutil cl "$_" 2>$null; $count++ } catch {} }
Write-Host "$count event logs cleared." -ForegroundColor Green
$paths = @("ghosttoolbox","$env:ProgramFiles\GhostToolbox\ghosttoolbox.exe","$env:LOCALAPPDATA\GhostToolbox\ghosttoolbox.exe")
$found = $paths | Where-Object { Get-Command $_ -EA SilentlyContinue } | Select-Object -First 1
if ($found) { Start-Process $found } else { Write-Warning "Ghost Toolbox not found. Install it first." }
winget import -i "Z:\Backup\WingetList\apps.json" --accept-source-agreements --accept-package-agreements --ignore-unavailable
Write-Host "All apps restored!" -ForegroundColor Green
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
$adv = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty $adv HideFileExt 0
Set-ItemProperty $adv TaskbarAl 0
Set-ItemProperty $adv TaskbarDa 0
Stop-Process -Name explorer -Force; Start-Process explorer
Write-Host "UI tweaks applied!" -ForegroundColor Green
@("$env:TEMP","$env:SystemRoot\Temp","$env:SystemRoot\Prefetch",
"$env:LOCALAPPDATA\Microsoft\Windows\Explorer",
"$env:SystemRoot\SoftwareDistribution\Download") | ForEach-Object {
Remove-Item "$_\*" -Force -Recurse -EA SilentlyContinue
Write-Host "Cleaned: $_" -ForegroundColor Cyan
}
Clear-RecycleBin -Force -EA SilentlyContinue
DISM /Online /Cleanup-Image /StartComponentCleanup
Write-Host "Deep cleanup complete!" -ForegroundColor Green
powercfg /duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
powercfg /setactive e9a42b02-d5df-448d-aa00-03f14749eb61
powercfg /getactivescheme
Write-Host "Ultimate Performance activated!" -ForegroundColor Green
@("Microsoft.DirectX","Microsoft.VCRedist.2005.x64","Microsoft.VCRedist.2005.x86",
"Microsoft.VCRedist.2008.x64","Microsoft.VCRedist.2008.x86",
"Microsoft.VCRedist.2010.x64","Microsoft.VCRedist.2010.x86",
"Microsoft.VCRedist.2012.x64","Microsoft.VCRedist.2012.x86",
"Microsoft.VCRedist.2013.x64","Microsoft.VCRedist.2013.x86",
"Microsoft.VCRedist.2015+.x64","Microsoft.VCRedist.2015+.x86",
"Microsoft.DotNet.DesktopRuntime.8","Microsoft.XNARedist") | ForEach-Object {
Write-Host "Installing: $_" -ForegroundColor Cyan
winget install $_ --accept-source-agreements --accept-package-agreements -h
}
Write-Host "All gaming runtimes installed!" -ForegroundColor Green
@(@{n="Steam";p="$env:LOCALAPPDATA\Steam\htmlcache"},
@{n="Epic Games";p="$env:LOCALAPPDATA\EpicGamesLauncher\Saved\webcache"},
@{n="EA App";p="$env:LOCALAPPDATA\Electronic Arts\EA Desktop\cache"},
@{n="Battle.net";p="$env:APPDATA\Battle.net\Cache"},
@{n="Ubisoft Connect";p="$env:LOCALAPPDATA\Ubisoft Game Launcher\cache"}
) | ForEach-Object {
if (Test-Path $_.p) { Remove-Item "$($_.p)\*" -Recurse -Force -EA SilentlyContinue; Write-Host "Cleared: $($_.n)" -ForegroundColor Green }
else { Write-Host "Not found: $($_.n)" -ForegroundColor DarkGray }
}
$gpu = Get-PnpDevice -Class Display | Where-Object Status -eq OK | Select-Object -First 1
$id = (Get-PnpDeviceProperty -InputObject $gpu -KeyName DEVPKEY_Device_InstanceId).Data
$path = "HKLM:\SYSTEM\CurrentControlSet\Enum\$id\Device Parameters\Interrupt Management\MessageSignaledInterruptProperties"
if (!(Test-Path $path)) { New-Item -Path $path -Force | Out-Null }
Set-ItemProperty -Path $path -Name MSISupported -Value 1 -Type DWord
Write-Host "MSI enabled for: $($gpu.FriendlyName). Reboot required!" -ForegroundColor Yellow
winget install Techpowerup.NVCleanstall --accept-source-agreements -h # NVIDIA
winget install AdvancedMicroDevices.AdrenalinEdition --accept-source-agreements -h # AMD
winget install Intel.ArcControl --accept-source-agreements -h # Intel Arc
winget install TeamSpeakSystems.TeamSpeakClient --accept-source-agreements -h
winget install Mumble.Mumble --accept-source-agreements -h
@("MSI.Afterburner","Guru3D.RTSS","HWiNFO.HWiNFO","CPUID.CPU-Z","TechPowerUp.GPU-Z","CrystalDewWorld.CrystalDiskInfo") | ForEach-Object {
Write-Host "Installing: $_" -ForegroundColor Cyan
winget install $_ --accept-source-agreements --accept-package-agreements -h
}
Write-Host "Monitoring toolkit installed!" -ForegroundColor Green
winget install Playnite.Playnite -h
winget install MSI.Afterburner -h
winget install Guru3D.RTSS -h
winget install HWiNFO.HWiNFO -h
# Manual download required:
Start-Process "https://www.wagnardsoft.com/DDU"
winget install BitSum.ProcessLasso -h
Start-Process "steam://store/993090" # ~€7 on Steam
winget install CrystalDewWorld.CrystalDiskMark -h
winget install CrystalDewWorld.CrystalDiskInfo -h
Start-Process "https://www.special-k.info"
winget install Futuremark.3DMark -h
# Unigine: benchmark.unigine.com
winget install RamenSoftware.Windhawk -h
winget install OBSProject.OBSStudio -h
Start-Process "https://vb-audio.com/Voicemeeter/banana.htm"
winget install Nvidia.Broadcast -h # NVIDIA RTX only
# AMD: built into Adrenaline Software
winget install ShareX.ShareX -h
winget install Blackmagic.DaVinciResolve -h
# OBS: Add custom RTMP output
# Server: rtmp://live.restream.io/live/
winget install "LosslessCut" -h
# streamelements.com → add as OBS Browser Source
winget install Streamlink.Streamlink -h
# Usage: streamlink https://twitch.tv/user best
winget install Elgato.StreamDeck -h
winget install Elgato.WaveLink -h
winget install Elgato.4KCaptureUtility -h
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\CS2"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 730 validate +quit
@'
Start-Process "C:\GameServers\CS2\game\bin\win64\cs2.exe" "-dedicated -console +hostname `"My CS2 Server`" +game_type 0 +game_mode 0 +map de_dust2 -maxplayers 16"
'@ | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "CS2" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow -EA SilentlyContinue
Write-Host "CS2 Server ready at $dir" -ForegroundColor Green
$dir="C:\GameServers\Minecraft"; New-Item $dir -ItemType Directory -Force|Out-Null
winget install EclipseAdoptium.Temurin.21.JDK --accept-source-agreements -h
$ver=(Invoke-RestMethod "https://api.papermc.io/v2/projects/paper").versions[-1]
$build=(Invoke-RestMethod "https://api.papermc.io/v2/projects/paper/versions/$ver/builds").builds[-1].build
$jar="paper-$ver-$build.jar"
Invoke-WebRequest "https://api.papermc.io/v2/projects/paper/versions/$ver/builds/$build/downloads/$jar" -OutFile "$dir\server.jar"
"eula=true"|Out-File "$dir\eula.txt" -Encoding ASCII
"cd `"$dir`"`njava -Xms2G -Xmx4G -jar server.jar nogui"|Out-File "$dir\start_server.bat" -Encoding ASCII
New-NetFirewallRule -DisplayName "Minecraft" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow -EA SilentlyContinue
Write-Host "Minecraft $ver (Build $build) ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\Palworld"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 2394010 validate +quit
@'
Start-Process "C:\GameServers\Palworld\PalServer.exe" "-port=8211 -players=32 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS"
'@ | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "Palworld" -Direction Inbound -Protocol UDP -LocalPort 8211 -Action Allow -EA SilentlyContinue
Write-Host "Palworld Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\Valheim"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 896660 validate +quit
@'
Start-Process "C:\GameServers\Valheim\valheim_server.exe" "-nographics -batchmode -name `"My Valheim`" -port 2456 -world `"Dedicated`" -password `"yourpassword`""
'@ | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "Valheim" -Direction Inbound -Protocol UDP -LocalPort 2456-2457 -Action Allow -EA SilentlyContinue
Write-Host "Valheim Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\Rust"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 258550 validate +quit
@'
Start-Process "C:\GameServers\Rust\RustDedicated.exe" "-batchmode -nographics -server.port 28015 -server.hostname `"My Rust Server`" -server.maxplayers 50 -server.worldsize 3000 -server.seed 12345"
'@ | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "Rust" -Direction Inbound -Protocol UDP -LocalPort 28015 -Action Allow -EA SilentlyContinue
Write-Host "Rust Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\ARK"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 376030 validate +quit
@'
Start-Process "C:\GameServers\ARK\ShooterGame\Binaries\Win64\ShooterGameServer.exe" "TheIsland?listen?SessionName=`"My ARK Server`"?MaxPlayers=20?ServerPassword=password -server -log"
'@ | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "ARK" -Direction Inbound -Protocol UDP -LocalPort 7777,27015 -Action Allow -EA SilentlyContinue
Write-Host "ARK Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\ProjectZomboid"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 380870 validate +quit
"Start-Process `"$dir\StartServer64.bat`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "PZ Server" -Direction Inbound -Protocol UDP -LocalPort 16261-16262 -Action Allow -EA SilentlyContinue
Write-Host "Project Zomboid Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\7DaysToDie"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 294420 validate +quit
"Start-Process `"$dir\7DaysToDieServer.exe`" `"-quit -batchmode -nographics -configfile=serverconfig.xml -dedicated`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "7D2D" -Direction Inbound -Protocol UDP -LocalPort 26900-26903 -Action Allow -EA SilentlyContinue
Write-Host "7 Days to Die Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\GMod"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 4020 validate +quit
"Start-Process `"$dir\srcds.exe`" `"-game garrysmod -console +gamemode sandbox +map gm_construct +maxplayers 16 +hostname `"My GMod Server`"`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "GMod" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow -EA SilentlyContinue
Write-Host "Garry's Mod Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\TF2"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 232250 validate +quit
"Start-Process `"$dir\srcds.exe`" `"-game tf -console +map cp_badlands +maxplayers 24 +hostname `"My TF2 Server`"`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "TF2" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow -EA SilentlyContinue
Write-Host "TF2 Server ready at $dir" -ForegroundColor Green
function Get-SteamCMD { if(!(Test-Path "C:\steamcmd\steamcmd.exe")){New-Item "C:\steamcmd" -ItemType Directory -Force|Out-Null;Invoke-WebRequest "https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip" -OutFile "C:\steamcmd\sc.zip";Expand-Archive "C:\steamcmd\sc.zip" -DestinationPath "C:\steamcmd" -Force;Remove-Item "C:\steamcmd\sc.zip"} }
Get-SteamCMD
$dir="C:\GameServers\L4D2"; New-Item $dir -ItemType Directory -Force|Out-Null
C:\steamcmd\steamcmd.exe +force_install_dir $dir +login anonymous +app_update 222860 validate +quit
"Start-Process `"$dir\srcds.exe`" `"-game left4dead2 -console +map c1m1_hotel +maxplayers 8 +hostname `"My L4D2 Server`"`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "L4D2" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow -EA SilentlyContinue
Write-Host "L4D2 Server ready at $dir" -ForegroundColor Green
$dir="C:\GameServers\Terraria"; New-Item $dir -ItemType Directory -Force|Out-Null
$release=Invoke-RestMethod "https://api.github.com/repos/Pryaxis/TShock/releases/latest"
$asset=$release.assets|Where-Object{$_.name -like "*.zip"}|Select-Object -First 1
Invoke-WebRequest $asset.browser_download_url -OutFile "$dir\tshock.zip"
Expand-Archive "$dir\tshock.zip" -DestinationPath $dir -Force
Remove-Item "$dir\tshock.zip"
"Start-Process `"$dir\TShock.Server.exe`" `"-port 7777 -maxplayers 8 -worldname MyWorld -autocreate 2`"" | Out-File "$dir\start_server.ps1" -Encoding UTF8
New-NetFirewallRule -DisplayName "Terraria TShock" -Direction Inbound -Protocol TCP -LocalPort 7777 -Action Allow -EA SilentlyContinue
Write-Host "TShock Terraria Server ready at $dir" -ForegroundColor Green
which paru && echo "paru already installed!" && exit 0
sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/paru.git /tmp/paru
cd /tmp/paru && makepkg -si
cd ~ && rm -rf /tmp/paru
echo "paru installed! Usage: paru -S packagename"
sudo pacman -S --needed \
steam wine wine-mono wine-gecko winetricks \
lutris gamemode lib32-gamemode \
mangohud lib32-mangohud \
vulkan-icd-loader lib32-vulkan-icd-loader
# AMD GPU (uncomment if using AMD)
# sudo pacman -S --needed vulkan-radeon lib32-vulkan-radeon amdvlk lib32-amdvlk
# NVIDIA GPU (uncomment if using NVIDIA)
# sudo pacman -S --needed nvidia-utils lib32-nvidia-utils
# Heroic Games Launcher (Epic + GOG on Linux)
paru -S heroic-games-launcher-bin
systemctl --user enable --now gamemoded
echo "Gaming stack installed!"
paru -S proton-ge-custom-bin
# OR install manually from latest GitHub release:
mkdir -p ~/.steam/root/compatibilitytools.d/
ver=$(curl -s "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest" | grep '"tag_name"' | cut -d'"' -f4)
curl -L "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${ver}/${ver}.tar.gz" | \
tar -xz -C ~/.steam/root/compatibilitytools.d/
echo "ProtonGE $ver installed. Restart Steam."
sudo pacman -S --needed \
linux-cachyos linux-cachyos-headers \
dxvk-mingw vkd3d-proton-mingw \
ananicy-cpp cachyos-ananicy-rules
sudo systemctl enable --now ananicy-cpp
echo "CachyOS performance packages installed. Reboot to use new kernel."
sudo pacman -S --needed garuda-gamer preload irqbalance
sudo systemctl enable --now preload irqbalance
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-gaming.conf
sudo sysctl --system
garuda-update # Full system update
echo "Garuda gaming optimizations applied!"
sudo pacman -S --needed mangohud lib32-mangohud goverlay
mkdir -p ~/.config/MangoHud
cat > ~/.config/MangoHud/MangoHud.conf << 'EOF'
legacy_layout=false
fps
fps_limit=0
cpu_temp
gpu_temp
cpu_load
gpu_load
ram
vram
frametime
position=top-left
font_size=22
EOF
echo "MangoHud configured!"
echo "Steam launch option: MANGOHUD=1 %command%"
| # | Game | Server ID | Install |
|---|---|---|---|
| 1 | Minecraft JavaJava | mcserver | |
| 2 | Rust | rustserver | |
| 3 | ARK: Survival Evolved | arkserver | |
| 4 | Counter-Strike 2 | cs2server | |
| 5 | Valheim | vhserver | |
| 6 | 7 Days to Die | sdtdserver | |
| 7 | TerrariaMono | terrariaserver | |
| 8 | Garry's Mod | gmodserver | |
| 9 | DayZPaid | dayzserver | |
| 10 | Palworld | pwserver | |
| 11 | SquadPaid | squadserver | |
| 12 | Project ZomboidJava | pzserver | |
| 13 | Team Fortress 2 | tf2server | |
| 14 | Arma 3Paid | arma3server | |
| 15 | Insurgency: Sandstorm | isserver | |
| 16 | Left 4 Dead 2 | l4d2server | |
| 17 | Killing Floor 2Paid | kf2server | |
| 18 | Starbound | sbserver | |
| 19 | No More Room in Hell | nmrihserver | |
| 20 | Hurtworld | hwserver |
winget install Google.PlatformTools -h
winget install Genymobile.scrcpy -h
# USB mirror (60fps): scrcpy --max-fps=60 --video-bit-rate=4M
# Wireless (same Wi-Fi): adb tcpip 5555 && adb connect [PHONE_IP]:5555 && scrcpy
winget install localsend.localsend -h
# CachyOS/Garuda/Arch: paru -S localsend-bin
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -Online -All
# Requires reboot. After: Start → search "Windows Sandbox"
Set-NetFirewallProfile -All -Enabled True
@(21,23,135,137,138,139,445,1433,3306) | ForEach-Object {
New-NetFirewallRule -DisplayName "BLOCK_IN_$_" -Direction Inbound -Protocol TCP -LocalPort $_ -Action Block -EA SilentlyContinue
Write-Host "Blocked inbound port: $_" -ForegroundColor Green
}
Write-Host "Firewall hardened." -ForegroundColor Green
(netsh wlan show profiles) -match ":\s(.+)$" | ForEach-Object {
$name = $_ -replace ".*:\s*",""
$pw = ((netsh wlan show profile name="$name" key=clear) -match "Key Content") -replace ".*:\s*",""
[PSCustomObject]@{Network=$name; Password=if($pw){$pw}else{"[No password / Open]"}}
} | Format-Table -AutoSize
$email = Read-Host "Enter email to check"
# Note: HIBP v3 email API requires a paid key at haveibeenpwned.com/API/Key
# Free alternative: check directly at haveibeenpwned.com
Start-Process "https://haveibeenpwned.com/account/$email"