152 lines
12 KiB
PowerShell
152 lines
12 KiB
PowerShell
# Usage:
|
|
# Open PowerShell as Administrator
|
|
# win+x
|
|
# alt+a
|
|
# alt+y
|
|
# Run:
|
|
# In admin powershell Terminal:
|
|
# iwr https://git.thecoven.info/PrincessPi/general-scripts-and-system-ssssssetup/raw/branch/main/Windows-Scripts/windows-repair.ps1?nocache=$(Get-Random) -OutFile $env:TEMP\windows-repair-temp.ps1; powershell -NoProfile -ep Bypass -File $env:TEMP\windows-repair-temp.ps1
|
|
|
|
# check if hasadmin rights, if notm run script in new terminal, clopsing old
|
|
## if not, carry on
|
|
if (-not ([Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544')) {
|
|
# launch tghis script int new window after promopting for admin
|
|
Start-Process -FilePath 'powershell' -Verb RunAs -ArgumentList "-ExecutionPolicy Bypass -File $PSCommandPath"
|
|
|
|
# CLOSE previous terminal
|
|
exit 0
|
|
} else {
|
|
Clear-Host # clear window
|
|
|
|
# ascii art
|
|
Write-Host -ForegroundColor Magenta @'
|
|
.. .....
|
|
....------..
|
|
..:--------.. .......
|
|
..----------.. ....---..
|
|
...---------=------::....:----:..
|
|
..-----=+**************=-----:...
|
|
.----+****************=-----...
|
|
.--=****************=-----=**+:::--:....
|
|
.-=#*********##**++=---====++**+-----:.
|
|
..:==********#=.+@%-==++===++===++*=----...
|
|
.:=::******%%+-::=++====+==++====+**=--...
|
|
.:+..+*****--@===-:-%--====-=+====+*#=:..
|
|
.-=.-****#=.#+===--=+===----======+*+..
|
|
.:=:+****#@#+=====-**-----*+====++**:.
|
|
.. .=****=--======-..%-----%+==++***+-..
|
|
..=++***+-.----======..*-----#+==+***#%#+..
|
|
.. .:-..---=====--------=-+==+**-@*. ............::::::....
|
|
..=:..--===+-:-------*%+==*+#%**=. .....:-------------------------:.
|
|
..............-:..--===+-..:-------+==+==.:... ...:----------------------------::.
|
|
......:----------::=:...--==+--:.:-------+==+=:.... ....--------------------------:.....
|
|
..:::----------------=-::.:--===---:.:------=--:.... ...:---------------------------...
|
|
..:------------------=--:..:--=+=--------::.:+-..... ...------------------------------..
|
|
...:-----------------:....----==-------:...=%*.......:::--------------------------------:..
|
|
...--------------:+......---------------:+%%#.----------------------------:.......-----:..
|
|
.:----===-------:-.. .:--------------*%%%%=--------------========------:.......-------:...
|
|
..-:.:------------....-.=---------=#%%%%##%------------=-----------------------------------..
|
|
.:--:....:--------:##*=:.-------=#%%%%%%#%+-----------=-------------------------------------:
|
|
..:-----------------::*%%#-------=###%%%%##=--------------------------------------:............
|
|
..:-------------------:.-#%%##+==+%%%%%%#%+------------------------...:::--------------::::::..
|
|
...:----------------------..-#%#%%%%%%%%*+#%=-------------------------=-:....:----------------:...
|
|
--------------------------:.-#%%%%%%%%+#@%%%--------------------------=++=-::---------------:...
|
|
---------------------------...+%%%%%%%#%%%%#---------------------------------------------:....
|
|
............------.....----:....-#%%%%%%%*=------------------------------::+=---------.......
|
|
..:-... ....-----.. ....-=-------------------------------------.=*+=.......
|
|
..---:....:-----:.......:--------------------------:-------------==+=-......
|
|
.:-------------..........:---------------------------..:-------------==..........
|
|
..-------------:... ...--------:...----------------....:-----------==-...........
|
|
..:----==------:..-.... ..--------:...:---------------.....:----------=+-.....
|
|
..------==+=++==-..+--:. .:--------.....-----------=*%=.. ..----------=+=......
|
|
....------------........:... ..:--------.....-------+#%%#@%.. ...----------=+=......
|
|
....---------===:............... .:----=+*#=. ..--+#**+%@@@#%+. ..:-:..=----=*=:.....
|
|
:............:=::+=:--:=.=-.::=... ..*@*-+%@@@:.....-@@#%@*#@@@#%:.. ..-:..---:-#**+-.........
|
|
.. ...::::....::-.:.::-.. ..*%:..*@@@*.. ..-%#%@@+%@@@@=.. ...::.=#=..-%*++=:... ...
|
|
...... .......... ..**...*#=*%:. .-*#@%+#%@@@@+... ..*%@%+...+%+=*+=-...
|
|
..*#:.-#+..+-. ..-*#**%%*%@@%=.. ..-%@@*:..+@%=:+**+=:..
|
|
..*@#*%%=..==. .-*%@#%@##@@@#-. ...#@@%*-=%@@#:..-=++=-
|
|
.:#@*-:++..==. .=#%@%*@@*%*=+*:....:.+@*::+%@@@%=......-*
|
|
.-%+...=%##%-. .+@*@%*%@##*-:*+..:-==*@=..:#@+:=*:.......
|
|
.:*#:..:*@@@%:. .-%@*%@#*%*#=..-%-....:+#=-.:#%-.:+-.......
|
|
.+@#=.-*@@@@*.. ....-%@@@@@@=..+%*.. .-%--=+#%-.:*-. ....
|
|
.-=++++++++=... .:***+++==::::... .-%#=-*#%#**#-.
|
|
..............
|
|
'@
|
|
# vars
|
|
$LogDir = "$env:USERPROFILE\Downloads\Repair-Log-$((Get-Date).ToString('yyyy-MM-dd-HHmm'))" # path to new log Dir
|
|
$MainLog = "$LogDir\main.log" # error log file
|
|
|
|
Write-Host "FIXING WINDOWS FULL PRINCESS PI STYLE (THIS WILL TAKE MANY HOURS AND REBOOT MORE THAN ONCE, SLOWLY)`n" -ForegroundColor Magenta
|
|
|
|
Write-Host "`tCreating Log Dir at $LogDir 1/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))"
|
|
mkdir "$LogDir" > $null 2> $null # create log dir
|
|
|
|
Write-Host "`tInitialize Log File $LogFile 3/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))`nFollow Log File in Another Terminal With Get-Content `"$LogFile`" -Wait -Tail 50"
|
|
Write-Host "$((Get-Date).ToString('yyyy-MM-dd-HHmm'))" >> "$LogDir\main.log"
|
|
|
|
Write-Host "`tOpening Log Dir 2/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
explorer.exe "$LogDir"
|
|
|
|
Write-Host "`tABORTING ANY SCHEDULED SHUTDOWN 4/21 AT $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
shutdown.exe /a > $null 2>> "$MainLog" # cmd abort scheduled shutdowns
|
|
|
|
Write-Host "`tCreating Log Dir at $LogDir 5/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
New-Item -Path "$LogDir" -ItemType Directory > $null 2>> "$MainLog" # create log dir
|
|
|
|
Write-Host "`tGenerating and Displaying Comprehensive Stability Report 6/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Start-Process "perfmon.exe" -ArgumentList "/report" -Wait # running report
|
|
|
|
Write-Host "`tGenerating and Displaying Stability History Report 7/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Start-Process "perfmon.exe" -ArgumentList "/rel" -Wait # historical report
|
|
|
|
Write-Host "`tClearning DNS Cache 8/21 $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
ipconfig.exe /flushsdns > $null 2>> "$MainLog" # flush dns cache
|
|
|
|
Write-Host "`tClearing ARP Table 9/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Remove-NetNeighbor -Confirm:$false > $null 2>> "$MainLog" # flush ARP Table
|
|
|
|
Write-Host "`tClearing ALL Samba Credentials 10/21 $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
net.exe use * /delete /y > $null 2>> "$MainLog" # nuke all samba creds automagically
|
|
|
|
Write-Host "`tReleasing and Renweing DHCP 11/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
# release and renew dhcp
|
|
ipconfig.exe /release > $null 2>> "$MainLog"
|
|
ipconfig.exe /renew > $null 2>> "$MainLog"
|
|
|
|
Write-Host "`tGetting Control of Windows Update 12/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Install-Module -Name PSWindowsUpdate -Force 1> $null 2>> "$MainLog"
|
|
Import-Module PSWindowsUpdate
|
|
|
|
Write-Host "`tUpdating Windows 13/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Get-WindowsUpdate -AcceptAll -Install -IgnoreReboot > $null 2>> "$MainLog"
|
|
|
|
Write-Host "`tUpdating Malware Signatures 14/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Update-MpSignature 2>> "$MainLog" # update windows defender malware siggs
|
|
|
|
Write-Host "`tRunning FULL Windows Defender SCAN 15/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
Start-MpScan -ScanType FullScan 2>> "$MainLog" # full windows defender scan
|
|
|
|
Write-Host "`tRunning DISM Online Image Cleanup 16/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
DISM.exe /Online /Cleanup-Image /RestoreHealth 2>> "$MainLog" # online check for bad files
|
|
|
|
Write-Host "`tRunning System File Checker 17/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
SFC.exe /scannow 2>> "$MainLog" # older check for bad files
|
|
|
|
Write-Host "`tScheduling Essential File Check on Next Boot 18/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
SFC.exe /scanonce 2>> "$MainLog" # check essential files on next boot
|
|
|
|
Write-Host "`tScheduling Offline chkdsk and repair of C: 19/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
echo y | chkdsk.exe /f /r C: > $null 2>> "$MainLog" # cmd checks C drive after reboot to waste time and fix errors (noninteractive via y ffuckery)
|
|
|
|
Write-Host "`tScheduling Offline Memory Test at Next Boot 20/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))" | Tee-Object -FilePath "$MainLog" -Append
|
|
mdsched.exe /s 2>> "$MainLog" # schedule offline memtest (noninteractive)
|
|
|
|
Write-Host "`tScheduling Windows Defender Offline Scan 21/21 at $((Get-Date).ToString('yyyy-MM-dd-HHmm'))`n`tMAY REBOOT UNEXPECTEDLY" | Tee-Object -FilePath "$MainLog" -Append
|
|
Start-MpWDOScan 2>> "$MainLog" # powershell starts Windows Defender Offline Scan after reboot
|
|
|
|
Write-Host "`nREBOOTING IN 5 MINUTES MAX PROVBABLY SOONER`n"
|
|
shutdown.exe /r /t (60*5) # shutdown in 5 minutes as failsafe
|
|
|
|
Write-Host "`n$((Get-Date).ToString('yyyy-MM-dd-HHmm'))`n`nDONEsiez :3~`n" | Tee-Object -FilePath "$MainLog" -Append
|
|
} |