Comment transférer des fichiers OneDrive à un autre utilisateur via PowerShell
Le transfert de fichiers de votre compte Microsoft OneDrive vers un autre utilisateur est facile dans le sens où vous pouvez télécharger le contenu de votre OneDrive, puis les télécharger manuellement sur l’autre compte. Dans cet article, nous allons vous montrer comment transférer des fichiers OneDrive vers un autre utilisateur via PowerShell .
Choses à considérer
Lorsqu’il s’agit de télécharger des fichiers de votre OneDrive vers un autre compte, c’est une tâche qui prendra un certain temps car il n’est pas possible pour le moment de télécharger des fichiers de plus de 250 Mo. La bonne nouvelle est que PowerShell notera tous les fichiers qu’il ne peut pas télécharger, vous pouvez donc les rechercher et les partager via la méthode habituelle.
Avant de télécharger les fichiers sur l’autre compte OneDrive, les fichiers seront d’abord téléchargés sur votre ordinateur, alors assurez-vous d’avoir suffisamment d’espace sur votre disque dur ou SSD avant de continuer. Et puisque votre connexion Internet est requise, la vitesse globale de transfert dépendra de la qualité du réseau.
Maintenant, nous devons noter que l’authentification à deux facteurs n’existe pas sur le compte administrateur, alors créez un compte administrateur temporaire qui n’a pas 2FA à cette fin uniquement.
Choses dont vous aurez besoin
Nous utiliserons un script spécial pour déplacer les fichiers d’un compte OneDrive à un autre. Donc, pour que le script fonctionne avec des problèmes, veuillez installer les modules PowerShell suivants dès maintenant :
Module SharePoint PnP PowerShell
Ouvrez l’outil PowerShell en tant qu’administrateur, puis exécutez la commande suivante :
Install-Module SharePointPnPPowerShellOnline -Force
Shell de gestion en ligne SharePoint
Le but de cet outil est de modifier les autorisations sur le compte OneDrive des utilisateurs.
Téléchargez-le et installez-le gratuitement à partir de microsoft.com .
Module Powershell MSOnline V1
Afin d’installer ce module final, veuillez exécuter la commande suivante dans PowerShell en tant qu’administrateur :
Install-Module MSOnline -Force
Comment transférer des fichiers OneDrive vers un autre compte
Pour transférer des fichiers de votre compte OneDrive vers un autre, vous devez ouvrir PowerShell puis exécuter le script fourni.
Ouvrez PowerShell
Ouvrez Visual Studio Code ou PowerShell.
Vous pouvez le faire en cliquant sur le bouton Rechercher, puis recherchez PowerShell.
De là, faites un clic droit sur l’application, puis sélectionnez l’option conçue pour ouvrir l’outil en mode administrateur.
Exécutez le script
Ensuite, vous devez exécuter le script approprié. Vous pouvez le trouver en bas de l’article.
Nous avons choisi de le faire car le script est assez long.
Après avoir ajouté le script, appuyez sur la touche Entrée de votre clavier.
Transférer les fichiers
Enfin, il est maintenant temps de transférer les fichiers vers un autre compte OneDrive.
Vous voyez, juste après avoir appuyé sur la touche Entrée, il vous sera demandé d’ajouter le compte de messagerie Le nom d’utilisateur de l’utilisateur sortant .
Vous aurez également besoin du nom d’utilisateur de l’utilisateur de destination . Il s’agit de l’utilisateur OneDrive vers lequel les fichiers seront copiés et transférés.
Enfin, il vous sera demandé d’ajouter le nom d’utilisateur de votre administrateur Office 365 .
Attendez que le script fasse son travail avant de vérifier le compte de réception pour voir si les fichiers ont été transférés correctement.
Copiez et collez le script ci-dessous :
$departinguser = Read-Host "Enter departing user's email"
$destinationuser = Read-Host "Enter destination user's email"
$globaladmin = Read-Host "Enter the username of your Global Admin account"
$credentials = Get-Credential -Credential $globaladmin
Connect-MsolService -Credential $credentials
$InitialDomain = Get-MsolDomain | Where-Object {$_.IsInitial -eq $true}
$SharePointAdminURL = "https://$($InitialDomain.Name.Split(".")[0])-admin.sharepoint.com"
$departingUserUnderscore = $departinguser -replace "[^a-zA-Z]", "_"
$destinationUserUnderscore = $destinationuser -replace "[^a-zA-Z]", "_"
$departingOneDriveSite = "https://$($InitialDomain.Name.Split(".")[0])-my.sharepoint.com/personal/$departingUserUnderscore"
$destinationOneDriveSite = "https://$($InitialDomain.Name.Split(".")[0])-my.sharepoint.com/personal/$destinationUserUnderscore"
Write-Host "`nConnecting to SharePoint Online"-ForegroundColor Blue
Connect-SPOService -Url $SharePointAdminURL -Credential $credentials
Write-Host "`nAdding $globaladmin as site collection admin on both OneDrive site collections"-ForegroundColor Blue
# Set current admin as a Site Collection Admin on both OneDrive Site Collections
Set-SPOUser -Site $departingOneDriveSite -LoginName $globaladmin -IsSiteCollectionAdmin $true
Set-SPOUser -Site $destinationOneDriveSite -LoginName $globaladmin -IsSiteCollectionAdmin $true
Write-Host "`nConnecting to $departinguser's OneDrive via SharePoint Online PNP module"-ForegroundColor Blue
Connect-PnPOnline -Url $departingOneDriveSite -Credentials $credentials
Write-Host "`nGetting display name of $departinguser"-ForegroundColor Blue
# Get name of departing user to create folder name.
$departingOwner = Get-PnPSiteCollectionAdmin | Where-Object {$_.loginname -match $departinguser}
# If there's an issue retrieving the departing user's display name, set this one.
if ($departingOwner -contains $null) {
$departingOwner = @{
Title = "Departing User"
}
}
# Define relative folder locations for OneDrive source and destination
$departingOneDrivePath = "/personal/$departingUserUnderscore/Documents"
$destinationOneDrivePath = "/personal/$destinationUserUnderscore/Documents/$($departingOwner.Title)'s Files"
$destinationOneDriveSiteRelativePath = "Documents/$($departingOwner.Title)'s Files"
Write-Host "`nGetting all items from $($departingOwner.Title)"-ForegroundColor Blue
# Get all items from source OneDrive
$items = Get-PnPListItem -List Documents -PageSize 1000
$largeItems = $items | Where-Object {[long]$_.fieldvalues.SMTotalFileStreamSize -ge 261095424 -and $_.FileSystemObjectType -contains "File"}
if ($largeItems) {
$largeexport = @()
foreach ($item in $largeitems) {
$largeexport += "$(Get-Date) - Size: $([math]::Round(($item.FieldValues.SMTotalFileStreamSize / 1MB),2)) MB Path: $($item.FieldValues.FileRef)"
Write-Host "File too large to copy: $($item.FieldValues.FileRef)"-ForegroundColor DarkYellow
}
$largeexport | Out-file C:\temp\largefiles.txt -Append
Write-Host "A list of files too large to be copied from $($departingOwner.Title) have been exported to C:\temp\LargeFiles.txt"-ForegroundColor Yellow
}
$rightSizeItems = $items | Where-Object {[long]$_.fieldvalues.SMTotalFileStreamSize -lt 261095424 -or $_.FileSystemObjectType -contains "Folder"}
Write-Host "`nConnecting to $destinationuser via SharePoint PNP PowerShell module"-ForegroundColor Blue
Connect-PnPOnline -Url $destinationOneDriveSite -Credentials $credentials
Write-Host "`nFilter by folders"-ForegroundColor Blue
# Filter by Folders to create directory structure
$folders = $rightSizeItems | Where-Object {$_.FileSystemObjectType -contains "Folder"}
Write-Host "`nCreating Directory Structure"-ForegroundColor Blue
foreach ($folder in $folders) {
$path = ('{0}{1}' -f $destinationOneDriveSiteRelativePath, $folder.fieldvalues.FileRef).Replace($departingOneDrivePath, '')
Write-Host "Creating folder in $path"-ForegroundColor Green
$newfolder = Ensure-PnPFolder -SiteRelativePath $path
}
Write-Host "`nCopying Files"-ForegroundColor Blue
$files = $rightSizeItems | Where-Object {$_.FileSystemObjectType -contains "File"}
$fileerrors = ""
foreach ($file in $files) {
$destpath = ("$destinationOneDrivePath$($file.fieldvalues.FileDirRef)").Replace($departingOneDrivePath, "")
Write-Host "Copying $($file.fieldvalues.FileLeafRef) to $destpath"-ForegroundColor Green
$newfile = Copy-PnPFile -SourceUrl $file.fieldvalues.FileRef -TargetUrl $destpath -OverwriteIfAlreadyExists -Force -ErrorVariable errors -ErrorAction SilentlyContinue
$fileerrors += $errors
}
$fileerrors | Out-File c:\temp\fileerrors.txt
# Remove Global Admin from Site Collection Admin role for both users
Write-Host "`nRemoving $globaladmin from OneDrive site collections"-ForegroundColor Blue
Set-SPOUser -Site $departingOneDriveSite -LoginName $globaladmin -IsSiteCollectionAdmin $false
Set-SPOUser -Site $destinationOneDriveSite -LoginName $globaladmin -IsSiteCollectionAdmin $false
Write-Host "`nComplete!"-ForegroundColor Green
Vous pouvez trouver le script sur cette page Reddit .
PowerShell peut-il accéder à OneDrive ?
SharePoint Online PowerShell permettra aux utilisateurs de se connecter à un autre compte OneDrive à l’aide de l’outil PowerShell. Il vous demandera d’insérer votre mot de passe pour que PowerShell commence à travailler sur vos comptes OneDrive au moyen d’applets de commande.
OneDrive est-il accessible aux utilisateurs externes ?
Votre compte OneDrive est accessible aux utilisateurs externes, mais uniquement si vous l’autorisez. Les utilisateurs peuvent avoir accès à vos fichiers pour toujours ou pour une période de temps définie. Vous pouvez également limiter ce qu’ils peuvent faire.
Comment copier des fichiers depuis le OneDrive d’une autre personne ?
Vous disposez des options suivantes si vous souhaitez copier des fichiers depuis le OneDrive d’une autre personne :
- Ouvrez OneDrive dans votre navigateur à l’aide du lien, sélectionnez les fichiers que vous souhaitez copier et cliquez sur Télécharger. Cela le téléchargera sur votre ordinateur.
- Ouvrez le compte OneDrive à l’aide du lien, sélectionnez les fichiers que vous souhaitez copier, puis cliquez sur Copier vers.
C’est ça!
Laisser un commentaire