Удаление параметров интерфейса Microsoft OneDrive
Рекомендуемый способ удаления всех параметров интерфейса и информации Microsoft OneDrive — переназначить все хранящиеся файлы другим пользователям и удалить сайт пользователя в OneDrive.
Администратор может удалить эти списки с помощью скрипта PowerShell и команд SharePoint Client-Side объектной модели (CSOM). Все необходимые сборки CSOM включены в модуль SharePointPnPPowerShellOnline Microsoft PowerShell.
Вы можете адаптировать скрипт, включенный в эту статью, в соответствии с вашими потребностями. Например, можно извлечь сведения для [email protected] следующим образом:
Назначьте себе разрешения для учетной записи OneDrive пользователя. Это можно сделать в Центре администрирования Microsoft 365, как описано в этой статье.
Установите необходимые модули Microsoft PowerShell:
Install-Module SharePointPnPPowerShellOnline
Install-Module CredentialManager
Выполните скрипт PowerShell DeleteODBLists (или его измененную версию):
$ODBSite = "https://contoso-my.sharepoint.com/personal/user1_contoso_com"
DeleteODBLists -siteUrl $ODBSite
Скрипт безвозвратно удаляет скрытые списки, содержащие эти параметры.
Важно!
Не запускайте данный сценарий для учетных записей активных пользователей OneDrive, которые еще работают в организации.
Сценарий DeleteODBLists
Скопируйте приведенное ниже содержимое и вставьте его в текстовый файл. Сохраните файл как DeleteODBLists.ps1.
Примечание.
Если вы видите ошибку о том, что сборка не загружается, проверьте путь к последней версии модуля PowerShell SharePointPnPPowerShellOnline, как определено в параметрах пути Add-Type. Путь может отличаться на компьютере или вы используете другую версию модуля (версия модуля является частью пути).
#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"]
}