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