OneDrive-bestanden overzetten naar een andere gebruiker via PowerShell

OneDrive-bestanden overzetten naar een andere gebruiker via PowerShell

Bestanden overzetten van uw Microsoft OneDrive-account naar een andere gebruiker is eenvoudig in die zin dat u de inhoud van uw OneDrive kunt downloaden en deze vervolgens handmatig kunt uploaden naar het andere account. In dit bericht laten we u zien hoe u OneDrive-bestanden via PowerShell naar een andere gebruiker kunt overbrengen .

Dingen om te overwegen

Als het gaat om het uploaden van bestanden van uw OneDrive naar een ander account, is dit een taak die enige tijd in beslag zal nemen, omdat het op dit moment niet mogelijk is om bestanden groter dan 250 MB te uploaden. Het goede nieuws is dat PowerShell alle bestanden noteert die het niet kan uploaden, zodat u ze kunt opzoeken en delen via de reguliere methode.

Voordat u de bestanden naar het andere OneDrive-account uploadt, worden de bestanden eerst naar uw computer gedownload, dus zorg ervoor dat u voldoende ruimte op uw harde schijf of SSD heeft voordat u verder gaat. En aangezien uw internetverbinding vereist is, hangt de algehele snelheid van de overdracht af van de kwaliteit van het netwerk.

Nu moeten we er rekening mee houden dat tweefactorauthenticatie niet bestaat op het beheerdersaccount, dus maak voor dit doel een tijdelijk beheerdersaccount aan dat geen 2FA heeft.

Dingen die je nodig hebt

We zullen een speciaal script gebruiken om de bestanden van het ene OneDrive-account naar het andere te verplaatsen. Installeer nu de volgende PowerShell-modules om ervoor te zorgen dat het script met problemen werkt:

SharePoint PnP PowerShell-module

Open de PowerShell-tool als beheerder en voer vervolgens de volgende opdracht uit:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online-beheershell

Het doel van deze tool is om de machtigingen voor het OneDrive-account van de gebruiker te wijzigen.

Download en installeer het gratis van microsoft.com .

MSOnline V1 Powershell-module

Voer de volgende opdracht uit in PowerShell als beheerder om deze laatste module te installeren:

Install-Module MSOnline -Force

OneDrive-bestanden overzetten naar een ander account

Om bestanden over te zetten van uw OneDrive-account naar een ander, moet u PowerShell openen en vervolgens het meegeleverde script uitvoeren.

Open PowerShell

Microsoft PowerShell-zoekopdracht

Open Visual Studio Code of PowerShell.

U kunt dit doen door op de knop Zoeken te klikken en vervolgens naar PowerShell te zoeken.

Klik vanaf daar met de rechtermuisknop op de app en selecteer vervolgens de optie die is ontworpen om de tool in de beheerdersmodus te openen.

Voer het script uit

OneDrive PowerShell-script

Vervolgens moet u het relevante script uitvoeren. Je vindt het onderaan het artikel.

We hebben ervoor gekozen om dit te doen omdat het script vrij lang is.

Nadat je het script hebt toegevoegd, druk je op Enter op je toetsenbord.

Breng de bestanden over

Eindelijk is het nu tijd om de bestanden over te zetten naar een ander OneDrive-account.

Zie je, direct nadat je op Enter hebt gedrukt, wordt je gevraagd om het e-mailaccount toe te voegen. De gebruikersnaam van de vertrekkende gebruiker .

U hebt ook de gebruikersnaam van de bestemmingsgebruiker nodig . Dit is de OneDrive-gebruiker waarnaar de bestanden worden gekopieerd en overgedragen.

Ten slotte wordt u gevraagd om de gebruikersnaam van uw Office 365-beheerder toe te voegen .

Wacht tot het script zijn werk doet voordat je het ontvangende account controleert om te zien of de bestanden correct zijn overgedragen.

Kopieer en plak het onderstaande script:

$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

Je vindt het script op deze Reddit-pagina .

Heeft PowerShell toegang tot OneDrive?

SharePoint Online PowerShell maakt het voor gebruikers mogelijk om verbinding te maken met een ander OneDrive-account met behulp van de PowerShell-tool. Het zal u vragen om uw wachtwoord in te voeren zodat PowerShell door middel van cmdlets aan uw OneDrive-accounts kan werken.

Is OneDrive toegankelijk voor externe gebruikers?

Uw OneDrive-account is toegankelijk voor externe gebruikers, maar alleen als u dit toestaat. Gebruikers kunnen voor altijd of voor een bepaalde tijd toegang hebben tot uw bestanden. Je kunt ook beperken wat ze kunnen doen.

Hoe bestanden kopiëren van de OneDrive van iemand anders?

U hebt de volgende opties als u bestanden wilt kopiëren van de OneDrive van iemand anders:

  • Open OneDrive in uw browser via de link, selecteer de bestanden die u wilt kopiëren en klik op Downloaden. Dit zal het downloaden naar uw computer.
  • Open het OneDrive-account via de link, selecteer de bestanden die u wilt kopiëren en klik op Kopiëren naar.

Dat is het!

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *