Comment transférer des fichiers OneDrive à un autre utilisateur via PowerShell

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

Recherche Microsoft 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

Script OneDrive PowerShell

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

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *