Unlink OneDrive account from PC

Prabhjot Singh 145 Reputation points
2024-05-03T09:54:21.8133333+00:00

Hi Team,

Is there a way to automate the process of unlinking of OneDrive account?

As for 1-2 accounts, we perform manual steps: open the OneDrive settings, go to the account tab, and click Unlink this PC.

But for thousands Laptops/desktop we don’t want our techs to have to do the same. The idea is to stop the sync, unlink the account from this PC and from explorer remove OneDrive. Need help on this

I am trying to run this script -

Function: Remove-OneDriveBusinessLink

Details of the function and its purpose can be provided here

Param (

[Parameter(Mandatory = $true)]

[string]$UserEmail

)

$accountsRegKeyPath = 'HKCU:\Software\Microsoft\OneDrive\Accounts'

Get subkeys matching “Business”

$businessSubKeys = Get-ChildItem -Path $accountsRegKeyPath | Where-Object { $_.Name -match 'Business' }

foreach ($subkey in $businessSubKeys) {

$oneDriveAccountKeyPath = "$accountsRegKeyPath$($subkey.Name)"

if (Test-Path -Path $oneDriveAccountKeyPath) {

$accountEmail = (Get-ItemProperty -Path $oneDriveAccountKeyPath -Name UserEmail).UserEmail

if ($accountEmail -eq $UserEmail) {

Write-Output "Found matching account for $UserEmail in $oneDriveAccountKeyPath"

$displayName = (Get-ItemProperty -Path $oneDriveAccountKeyPath -Name DisplayName).DisplayName

$oneDriveName = "OneDrive - $displayName"

$desktopPath = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace'

$desktopSubKeys = Get-ChildItem -Path $desktopPath

foreach ($desktopSubKey in $desktopSubKeys) {

$subKeyName = $desktopSubKey.Name

$subKeyFullPath = Join-Path -Path $desktopPath -ChildPath $subKeyName

if ((Get-ItemProperty -Path $subKeyFullPath -Name '(Default)').'(Default)' -eq $oneDriveName) {

Write-Output "Found OneDrive link in registry directory: $subKeyFullPath"

if ($PSCmdlet.ShouldProcess("Delete OneDrive registry keys for $UserEmail")) {

Remove-Item -Path $subKeyFullPath -Recurse

Write-Output "Deleted registry key: $subKeyFullPath"

Remove-Item -Path $oneDriveAccountKeyPath -Recurse

Write-Output "Removed OneDrive account key: $oneDriveAccountKeyPath"

Stop-Process -Name OneDrive -Force

Write-Output "OneDrive process stopped"

}

}

}

}

}

}

PowerShell
PowerShell
A family of Microsoft task automation and configuration management frameworks consisting of a command-line shell and associated scripting language.
2,132 questions
0 comments No comments
{count} votes