mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 22:55:52 -06:00
85 lines
3.6 KiB
PowerShell
85 lines
3.6 KiB
PowerShell
|
function Remove-OneDrive {
|
||
|
<#
|
||
|
|
||
|
.DESCRIPTION
|
||
|
This function will remove onedrive
|
||
|
|
||
|
.EXAMPLE
|
||
|
|
||
|
Remove-OneDrive
|
||
|
|
||
|
#>
|
||
|
param (
|
||
|
$name = "OneDrive"
|
||
|
)
|
||
|
|
||
|
Try{
|
||
|
|
||
|
Write-Output "Kill OneDrive process"
|
||
|
taskkill.exe /F /IM "OneDrive.exe"
|
||
|
taskkill.exe /F /IM "explorer.exe"
|
||
|
|
||
|
Write-Output "Copy all OneDrive to Root UserProfile"
|
||
|
robocopy $env:USERPROFILE\OneDrive $env:USERPROFILE /e /xj
|
||
|
|
||
|
Write-Output "Remove OneDrive"
|
||
|
if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") {
|
||
|
& "$env:systemroot\System32\OneDriveSetup.exe" /uninstall
|
||
|
}
|
||
|
if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") {
|
||
|
& "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall
|
||
|
}
|
||
|
|
||
|
Write-Output "Removing OneDrive leftovers"
|
||
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive"
|
||
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive"
|
||
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp"
|
||
|
# check if directory is empty before removing:
|
||
|
If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) {
|
||
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive"
|
||
|
}
|
||
|
|
||
|
Write-Output "Disable OneDrive via Group Policies"
|
||
|
New-FolderForced -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive"
|
||
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1
|
||
|
|
||
|
Write-Output "Remove Onedrive from explorer sidebar"
|
||
|
New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR"
|
||
|
mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
|
||
|
Set-ItemProperty -Path "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
|
||
|
mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
|
||
|
Set-ItemProperty -Path "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
|
||
|
Remove-PSDrive "HKCR"
|
||
|
|
||
|
# Thank you Matthew Israelsson
|
||
|
Write-Output "Removing run hook for new users"
|
||
|
reg load "hku\Default" "C:\Users\Default\NTUSER.DAT"
|
||
|
reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
|
||
|
reg unload "hku\Default"
|
||
|
|
||
|
Write-Output "Removing startmenu entry"
|
||
|
Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"
|
||
|
|
||
|
Write-Output "Removing scheduled task"
|
||
|
Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
|
||
|
|
||
|
Write-Output "Restarting explorer"
|
||
|
Start-Process "explorer.exe"
|
||
|
|
||
|
Write-Output "Waiting for explorer to complete loading"
|
||
|
Start-Sleep 10
|
||
|
}
|
||
|
Catch [System.Exception] {
|
||
|
if($psitem.Exception.Message -like "*The requested operation requires elevation*"){
|
||
|
Write-Warning "Unable to uninstall $name due to a Security Exception"
|
||
|
}
|
||
|
Else{
|
||
|
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
||
|
Write-Warning $psitem.Exception.StackTrace
|
||
|
}
|
||
|
}
|
||
|
Catch{
|
||
|
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
||
|
Write-Warning $psitem.Exception.StackTrace
|
||
|
}
|
||
|
}
|