Exporter les paramètres de l’expérience Microsoft OneDrive
L’expérience Microsoft OneDrive d’un utilisateur stocke des informations pour aider l’utilisateur à trouver et à accéder au contenu qui l’intéresse. La plupart de ces informations sont accessibles par les utilisateurs finaux à l’aide des fonctionnalités intégrées au produit correspondantes répertoriées dans le tableau suivant :
Expérience | Données stockées | Accès utilisateur |
---|---|---|
Éléments partagés | Liste des documents partagés avec l’utilisateur par d’autres personnes. Il présente également une vue des documents que l’utilisateur a partagés avec d’autres personnes, qui est une vue des autorisations que l’utilisateur a définies sur les éléments de son compte OneDrive. | À partir du compte OneDrive d’un utilisateur, sélectionnez Partagé. |
Notifications Push Mobile | Notifications Push aux applications mobiles OneDrive et SharePoint des utilisateurs, si elles sont configurées. Cela inclut les activités pertinentes telles que les nouveaux fichiers partagés avec eux. Les administrateurs peuvent les gérer dans la page Paramètres du nouveau Centre d’administration SharePoint. |
|
Sites et contenu suivis | Les utilisateurs peuvent suivre des sites, des documents ou des personnes. Les sites suivis peuvent être affichés à l’aide d’expériences intégrées au produit. |
Les sites suivis peuvent être consultés et gérés dans l’expérience d’accueil SharePoint. Cette expérience montre également les sites récents . À partir de son compte OneDrive, l’utilisateur peut sélectionner l’icône d’engrenages Paramètres, Paramètres du site, puis Flux d’actualités. Sur le côté droit, il peut cliquer sur le type de contenu approprié sous Je suis. |
Flux d’actualités | Liste des activités de l’utilisateur, y compris le contenu suivi, les mentions et les modifications de profil. Les utilisateurs peuvent y accéder à l’aide d’expériences intégrées au produit. | À partir de son compte OneDrive, l’utilisateur peut sélectionner l’icône d’engrenages Paramètres, Paramètres du site, puis Flux d’actualités. Les paramètres Flux d’actualités peuvent être gérés dans le cadre de l’expérience de profil utilisateur, décrite précédemment. |
Demandes d’accès | Liste des demandes d’accès au contenu. | À partir de son compte OneDrive, l’utilisateur peut sélectionner l’icône d’engrenages Paramètres, Paramètres du site, puis Demandes d’accès et invitations. |
Un administrateur peut exporter ces listes à l’aide de PnP PowerShell et des commandes CSOM (SharePoint Client-Side Object Model) dans cet article. Tous les assemblys CSOM nécessaires sont inclus dans le module Microsoft PowerShell SharePointPnPPowerShellOnline.
Il s’agit d’un exemple de script qui peut être adapté pour répondre aux besoins de votre organisation. Par exemple, un administrateur peut extraire les informations pour user1@contoso.com à l’aide de la procédure suivante.
Attribuez-vous des autorisations d’administrateur sur le compte OneDrive de l’utilisateur. Cette opération peut être effectuée dans le Centre d’administration Microsoft 365.
Installez les modules Microsoft PowerShell requis :
Install-Module SharePointPnPPowerShellOnline
Install-Module CredentialManager
Exécutez le script PowerShell ExportODBLists ci-dessous (ou une version personnalisée du script) :
$ODBSite = "https://contoso-my.sharepoint.com/personal/user1_contoso_com"
ExportODBLists.ps1 -siteUrl $ODBSite
Le script exporte les données stockées pour les fonctionnalités décrites dans le tableau précédent vers plusieurs fichiers CSV. L’administrateur peut les réviser ou les éditer avant de les fournir à l’utilisateur final.
Le script crée les fichiers CSV suivants (si les listes correspondantes sont trouvées). Le nom du fichier CSV correspond au titre de la liste.
Fichier | Description |
---|---|
(Référence, <id>).csv, où <id> est une séquence de lettres et de chiffres | Liste des éléments partagés avec l’utilisateur |
Sharing Links.csv | Liste de liens partagés générée par l’utilisateur |
userActivityFeedHiddenListF4387007-BE61-432F-8BDB-85E6B9679E4B.csv | Liste des activités pertinentes |
notificationSubscriptionHiddenList6D1E55DA-2564-4A22-A5F9-6C4FCAFF53DE.csv | Liste des notifications envoyées aux applications mobiles et des ID d’application pour ces appareils |
Social.csv | Liste du contenu suivi |
MicroFeed.csv | Liste d’éléments du flux d’actualités |
Access Requests.csv | Liste des demandes d’accès |
SharePointHomeCacheList.csv | Données mises en cache de l’utilisateur accédant à La page d’accueil SharePoint. Il est actualisé chaque fois que l’utilisateur accède à SharePoint Accueil. |
Script ExportODBLists
Copiez le contenu ci-dessous et collez-le dans un fichier texte. Enregistrez le fichier sous ExportODBLists.ps1. Le script peut exporter tous les champs des listes cibles à l’aide du exportAllFields
paramètre . Le script peut être modifié pour exporter toutes les listes et gérer d’autres sites.
Remarque
Si vous voyez une erreur indiquant qu’un assembly n’est pas chargé, vérifiez le chemin d’accès à la dernière version du module PowerShell SharePointPnPPowerShellOnline tel que défini dans les paramètres de chemin d'Add-Type. Le chemin d’accès peut être différent sur votre ordinateur ou vous pouvez utiliser une autre version du module (la version du module fait partie du chemin d’accès).
#ExportODBLists
#Exports OneDrive experience settings, stored in several SharePoint lists
param([string]$siteUrl, [bool]$exportAllFields=$false, [bool]$useStoredCreds=$true, [string]$exportFolder)
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"
#list fields to eexport
$SWMFields = @("ID","Created","Modified","Title","RemoteItemPath","OwnerDisplayName","OwnerSipAddress","RemoteItemFileSystemObjectType",
"RemoteItemCreatorDisplayName","RemoteItemCreatorSipAddress","RemoteItemCreatedDateTime",
"RemoteItemModifierDisplayName","RemoteItemModifierSipAddress","RemoteItemModifiedDateTime",
"SWMSharedByDisplayName","SWMSharedBySipAddress","SWMSharedByDateTime",
"RemoteItemLastAccessedDateTime","RemoteItemServerRedirectedUrl","RemoteItemServerRedirectedEmbedUrl")
$accessRequestsFields = @("ID","Created","Modified","Title","RequestId","RequestedObjectTitle","RequestedObjectUrl","PermissionType","PermissionLevelRequested","RequestDate",
"RequestedByDisplayName","RequestedBy","ReqByUser",
"RequestedForDisplayName","RequestedFor","ReqForUser",
"ApprovedBy","AcceptedBy","Status","Expires","WelcomeEmailSubject","WelcomeEmailBody","ExtendedWelcomeEmailBody","Conversation")
$microfeedFields = @("ID","Created","Modified","Title","MicroBlogType","PostAuthor","RootPostOwnerID","RootPostUniqueID","ReplyCoungett","Order","ContentData")
$notificationsFields = @("ID","Created","Modified","Title","SubscriptionId","PoolName","SecondaryPoolName","AppType","NotificationHandle",
"SecondsToExpiry","DestinationType","SubmissionDateTime","ExpirationDateTime","Locale","DeviceId","HostName","NotificationCounter",
"SingleSignOutKey","NotificationScenarios","ComplianceAssetId","AppAuthor","AppEditor")
$SPHomeCacheFields = @("ID","Created","Modified","Author","Editor","Title","Value")
$sharingLinksFields = @("ID","Created","Modified","Title","SharingDocId","ComplianceAssetId","CurrentLink","AvailableLinks")
$socialFields = @("ID","Created","Modified","Author","Editor","Title","Url","Hidden","HasFeed","SocialProperties")
$activityFeedFields = @("ID","Created","Modified","Title","ActivityId","ItemId","PushNotificationsSent","EmailNotificationSent","IsActorActivity","IsRead","Order",
"ItemChildCount","FolderChildCount","ActivityEventType","ActivityEvent")
#get lists in the web
try{
$lists = $ctx.web.Lists
$ctx.load($lists)
$ctx.executeQuery()
}
catch{
write-host "$($_.Exception.Message)" -foregroundcolor red
}
#identify the lists to export
$listsToExport = @()
foreach($list in $lists)
{
$ctx.load($list)
$ctx.load($list.RootFolder)
$ctx.executeQuery()
$listTitle = [string]$list.Title
$listRoot = $list.RootFolder.Name
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; listFields = $SWMFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $notificationsRoot)
{
Write-Host ">> Found: Notifications List" -ForegroundColor Green
$listDetails = @{listType = "Notifications List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $notificationsFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $activityFeedRoot)
{
Write-Host ">> Found: User Activity Feed List" -ForegroundColor Green
$listDetails = @{listType = "User Activity Feed List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $activityFeedFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $accessRequestsRoot)
{
Write-Host ">> Found: Access Requests List" -ForegroundColor Green
$listDetails = @{listType = "Access Requests List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $accessRequestsFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $microfeedRoot)
{
Write-Host ">> Found: MicroFeed List" -ForegroundColor Green
$listDetails = @{listType = "Microfeed List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $microfeedFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $SPHomeCacheRoot)
{
Write-Host ">> Found: SharePoint Home Cache List" -ForegroundColor Green
$listDetails = @{listType = "SharePoint Home Cache List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $SPHomeCacheFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $sharingLinksRoot)
{
Write-Host ">> Found: Sharing Links List" -ForegroundColor Green
$listDetails = @{listType = "Sharing Links List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $sharingLinksFields}
$listsToExport += $listDetails
}
elseif ($listRoot -eq $socialRoot)
{
Write-Host ">> Found: Social List" -ForegroundColor Green
$listDetails = @{listType = "Social List"; listTitle = $listTitle; listRoot = $listRoot; listFields = $socialFields}
$listsToExport += $listDetails
}
}
#export list function
function exportList
{
Param ([string] $listTitle, [string[]]$listFields, [string]$exportFile)
Write-Host ("Exporting List: " + $listTitle).ToUpper() -ForegroundColor Green
Write-Host (">> File location: $exportFile") -ForegroundColor Green
#Get the list items
$list = $lists.GetByTitle($listTitle)
$listItems = $list.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery())
$fieldColl = $list.Fields
$ctx.load($listItems)
$ctx.load($fieldColl)
$ctx.executeQuery()
if ($listFields) #if you're passing a specific set of fields, in a specific order, process those
{
#Array to Hold List Items
$listItemCollection = @()
#Fetch each list item value to export to excel
foreach($item in $listItems)
{
$exportItem = New-Object PSObject
Foreach ($field in $listFields)
{
if($NULL -ne $item[$field])
{
#Expand the value of Person or Lookup fields
$fieldType = $item[$field].GetType().name
if (($fieldType -eq "FieldLookupValue") -or ($fieldType -eq "FieldUserValue"))
{
$fieldValue = $item[$field].LookupValue
}
elseif ($fieldType -eq "FieldUrlValue")
{
$fieldValue = $item[$field].Url
}
else
{
$fieldValue = $item[$field]
}
}
$exportItem | Add-Member -MemberType NoteProperty -name $field -value $fieldValue
}
#Add the object with above properties to the Array
$listItemCollection += $exportItem
}
#Export the result Array to CSV file
$listItemCollection | Export-CSV $exportFile -NoTypeInformation
}
else #export all fields for the list
{
#Array to Hold List Items
$listItemCollection = @()
#Fetch each list item value to export to excel
foreach($item in $listItems)
{
$exportItem = New-Object PSObject
Foreach($field in $fieldColl)
{
if($NULL -ne $item[$field.InternalName])
{
#Expand the value of Person or Lookup fields
$fieldType = $item[$field.InternalName].GetType().name
if (($fieldType -eq "FieldLookupValue") -or ($fieldType -eq "FieldUserValue"))
{
$fieldValue = $item[$field.InternalName].LookupValue
}
elseif ($fieldType -eq "FieldUrlValue")
{
$fieldValue = $item[$field].Url
}
else
{
$fieldValue = $item[$field.InternalName]
}
}
$exportItem | Add-Member -MemberType NoteProperty -name $field.InternalName -value $fieldValue
}
#Add the object with above properties to the Array
$listItemCollection += $exportItem
}
#Export the result Array to CSV file
$listItemCollection | Export-CSV $exportFile -NoTypeInformation
}
}
#export the lists
foreach ($list in $listsToExport)
{
#if we have a valid folder for export, use it, otherwise export to the current directory
if ($exportFolder -and (Test-Path $exportFolder -PathType Container))
{
$filepath = Join-Path -Path $exportFolder -ChildPath ($list["listTitle"] + ".csv")
}
else
{
$filepath = ($list["listTitle"] + ".csv")
}
#export the lists
if ($exportAllFields)
{
exportList -listTitle $list["listTitle"] -exportFile $filepath
}
else
{
exportList -listTitle $list["listTitle"] -listFields $list["listFields"] -exportFile $filepath
}
}