Cancellare le impostazioni di esperienza Microsoft OneDrive
Il metodo consigliato per eliminare tutte le impostazioni e le informazioni di esperienza di Microsoft OneDrive è quello di rimuovere il sito OneDrive dell'utente dopo aver riassegnato i file conservati ad altri utenti.
Un amministratore può eliminare questi elenchi usando i comandi CSOM (PowerShell Script) e SharePoint Client-Side Object Model (CSOM). Tutti gli assembly CSOM necessari sono inclusi nel modulo Di SharePointPnPPowerShellOnline di Microsoft PowerShell.
È possibile adattare lo script incluso in questo articolo per soddisfare le proprie esigenze. Ad esempio, è possibile estrarre le informazioni per user1@contoso.com come indicato di seguito:
Assegnare a se stessi le autorizzazioni per l'account OneDrive dell'utente. Questa operazione può essere eseguita nell'interfaccia di amministrazione di Microsoft 365 come descritto di seguito.
Installare i moduli Microsoft PowerShell richiesti:
Install-Module SharePointPnPPowerShellOnline
Install-Module CredentialManager
Eseguire lo script PowerShell di DeleteODBLists riportato di seguito (o una versione personalizzata dello script), ad esempio:
$ODBSite = "https://contoso-my.sharepoint.com/personal/user1_contoso_com"
DeleteODBLists -siteUrl $ODBSite
Lo script eliminerà definitivamente gli elenchi nascosti che contengono queste impostazioni.
Importante
Non eseguire questo script sugli account OneDrive che fanno ancora parte dell'organizzazione.
Copiare il contenuto seguente e incollarlo in un file di testo. Salvare il file come DeleteODBLists.ps1.
Nota
Se viene visualizzato un errore relativo al mancato caricamento di un assembly, controllare di nuovo il percorso della versione più recente del modulo PowerShell SharePointPnPPowerShellOnline, come definito nei parametri percorso Add-Type. Il percorso potrebbe essere diverso nel computer o si potrebbe usare una versione diversa del modulo (la versione del modulo fa parte del percorso).
#DeleteODBLists
#Deletes OneDrive experience settings, stored in several SharePoint Lists
param([string]$siteUrl, [bool]$useStoredCreds=$true)
Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\SharePointPnPPowerShellOnline\2.26.1805.0\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\SharePointPnPPowerShellOnline\2.26.1805.0\Microsoft.SharePoint.Client.Runtime.dll"
if (!$siteUrl)
{
Write-Host "Please specify a OneDrive site using -siteUrl."
return
}
if ($useStoredCreds)
{
Write-Host "Retrieving stored Windows credentials for $siteUrl."
$cred = Get-StoredCredential -Target $siteUrl
if (!$cred)
{
Write-Host "Didn't find stored credential for $siteUrl. Please provide credentials to connect."
$cred = Get-Credential
}
}
else
{
$cred = Get-Credential
}
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($cred.UserName,$cred.Password)
$webURL = $siteUrl
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webURL)
$ctx.Credentials = $credentials
#Root folders of lists to export
$SWMRoot = "Reference " #starts with this string
$notificationsRoot = "notificationSubscriptionHiddenList6D1E55DA25644A22"
$activityFeedRoot = "userActivityFeedHiddenListF4387007BE61432F8BDB85E6"
$accessRequestsRoot = "Access Requests"
$microfeedRoot = "PublishedFeed"
$SPHomeCacheRoot = "SharePointHomeCacheList"
$sharingLinksRoot = "Sharing Links"
$socialRoot = "Social"
#Get all lists in the web
try{
$lists = $ctx.web.Lists
$ctx.load($lists)
$ctx.executeQuery()
}
catch{
write-host "$($_.Exception.Message)" -foregroundcolor red
}
#Process all lists and identify the settings lists to be deleted
$listsToDelete = @()
foreach($list in $lists)
{
$ctx.load($list)
$ctx.load($list.RootFolder)
$ctx.executeQuery()
$listTitle = [string]$list.Title
$listRoot = $list.RootFolder.Name
$listTemplateId = $list.TemplateFeatureId
Write-host ("Processing List: " + $list.Title + " with " + $list.ItemCount + " items").ToUpper() -ForegroundColor Yellow
Write-host (">> List Root Folder: " + $listRoot) -ForegroundColor Yellow
if ($listRoot.StartsWith($SWMRoot,"CurrentCultureIgnoreCase") -and $list.ItemCount -ge 1)
{
Write-Host ">> Found: Shared With Me List" -ForegroundColor Green
$listDetails = @{listType = "Shared With Me List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $notificationsRoot)
{
Write-Host ">> Found: Notifications List" -ForegroundColor Green
$listDetails = @{listType = "Notifications List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $activityFeedRoot)
{
Write-Host ">> Found: User Activity Feed List" -ForegroundColor Green
$listDetails = @{listType = "User Activity Feed List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $accessRequestsRoot)
{
Write-Host ">> Found: Access Requests List" -ForegroundColor Green
$listDetails = @{listType = "Access Requests List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $microfeedRoot)
{
Write-Host ">> Found: MicroFeed List" -ForegroundColor Green
$listDetails = @{listType = "Microfeed List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $SPHomeCacheRoot)
{
Write-Host ">> Found: SharePoint Home Cache List" -ForegroundColor Green
$listDetails = @{listType = "SharePoint Home Cache List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $sharingLinksRoot)
{
Write-Host ">> Found: Sharing Links List" -ForegroundColor Green
$listDetails = @{listType = "Sharing Links List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
elseif ($listRoot -eq $socialRoot)
{
Write-Host ">> Found: Social List" -ForegroundColor Green
$listDetails = @{listType = "Social List"; listTitle = $listTitle; listRoot = $listRoot; listTemplateId = $listTemplateId}
$listsToDelete += $listDetails
}
}
#Retrieve web features
$webFeatures = $ctx.Web.Features
$ctx.Load($webFeatures)
$ctx.ExecuteQuery()
#Export list function
function deleteList
{
Param ([string] $listTitle, [string] $listTemplateId)
Write-Host ("Deleting List: " + $listTitle).ToUpper() -ForegroundColor Red
#Remove features the list may depend on
$webfeatures.Remove($listTemplateId, $true)
$ctx.executeQuery()
#Set the list to allow deletion
$list = $lists.GetByTitle($listTitle)
$list.AllowDeletion = $true
$list.Update()
$ctx.executeQuery()
#Delete the list
$list.DeleteObject()
$ctx.executeQuery()
}
#Delete all target lists
foreach ($list in $listsToDelete)
{
deleteList -listTitle $list["listTitle"] -listTemplateId $list["listTemplateId"]
}