So übertragen Sie OneDrive-Dateien über PowerShell an einen anderen Benutzer

So übertragen Sie OneDrive-Dateien über PowerShell an einen anderen Benutzer

Das Übertragen von Dateien von Ihrem Microsoft OneDrive-Konto an einen anderen Benutzer ist in dem Sinne einfach, dass Sie die Inhalte von Ihrem OneDrive herunterladen und sie dann manuell auf das andere Konto hochladen können. In diesem Beitrag zeigen wir Ihnen, wie Sie OneDrive-Dateien über PowerShell an einen anderen Benutzer übertragen .

Dinge, die man beachten muss

Wenn es darum geht, Dateien von Ihrem OneDrive auf ein anderes Konto hochzuladen, ist dies eine Aufgabe, die einige Zeit in Anspruch nehmen wird, da es derzeit nicht möglich ist, Dateien mit mehr als 250 MB hochzuladen. Die gute Nachricht ist, dass PowerShell alle Dateien notiert, die nicht hochgeladen werden können, sodass Sie sie wie gewohnt suchen und freigeben können.

Bevor Sie die Dateien auf das andere OneDrive-Konto hochladen, werden sie zunächst auf Ihren Computer heruntergeladen. Stellen Sie daher sicher, dass auf Ihrer Festplatte oder SSD genügend Speicherplatz vorhanden ist, bevor Sie fortfahren. Und da Ihre Internetverbindung erforderlich ist, hängt die Gesamtgeschwindigkeit der Übertragung von der Qualität des Netzwerks ab.

Nun müssen wir beachten, dass es für das Administratorkonto keine Zwei-Faktor-Authentifizierung gibt. Erstellen Sie daher nur zu diesem Zweck ein temporäres Administratorkonto ohne 2FA.

Dinge, die Sie brauchen werden

Wir werden ein spezielles Skript verwenden, um die Dateien von einem OneDrive-Konto auf ein anderes zu verschieben. Damit das Skript bei Problemen funktioniert, installieren Sie bitte jetzt die folgenden PowerShell-Module:

SharePoint PnP PowerShell-Modul

Öffnen Sie das PowerShell-Tool als Administrator und führen Sie dann den folgenden Befehl aus:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online-Verwaltungsshell

Der Zweck dieses Tools besteht darin, die Berechtigungen für das OneDrive-Konto der Benutzer zu ändern.

Laden Sie es kostenlos von microsoft.com herunter und installieren Sie es .

MSOnline V1 Powershell-Modul

Um dieses letzte Modul zu installieren, führen Sie bitte den folgenden Befehl in PowerShell als Administrator aus:

Install-Module MSOnline -Force

So übertragen Sie OneDrive-Dateien auf ein anderes Konto

Um Dateien von Ihrem OneDrive-Konto auf ein anderes zu übertragen, müssen Sie PowerShell öffnen und dann das bereitgestellte Skript ausführen.

Öffnen Sie PowerShell

Microsoft PowerShell-Suche

Öffnen Sie Visual Studio Code oder PowerShell.

Sie können dies tun, indem Sie auf die Schaltfläche „Suchen“ klicken und dann nach „PowerShell“ suchen.

Klicken Sie dort mit der rechten Maustaste auf die App und wählen Sie dann die Option zum Öffnen des Tools im Admin-Modus aus.

Führen Sie das Skript aus

OneDrive PowerShell-Skript

Als nächstes müssen Sie das entsprechende Skript ausführen. Sie finden es am Ende des Artikels.

Wir haben uns dafür entschieden, weil das Drehbuch ziemlich lang ist.

Nachdem Sie das Skript hinzugefügt haben, drücken Sie die Eingabetaste auf Ihrer Tastatur.

Übertragen Sie die Dateien

Schließlich ist es nun an der Zeit, die Dateien auf ein anderes OneDrive-Konto zu übertragen.

Sie sehen, direkt nach dem Drücken der Eingabetaste werden Sie aufgefordert, das E-Mail-Konto hinzuzufügen. Den Benutzernamen des abgehenden Benutzers .

Sie benötigen außerdem den Benutzernamen des Zielbenutzers . Dies ist der OneDrive-Benutzer, an den die Dateien kopiert und übertragen werden.

Abschließend werden Sie aufgefordert, den Benutzernamen Ihres Office 365-Administrators hinzuzufügen .

Warten Sie, bis das Skript seine Aufgabe erledigt hat, bevor Sie das Empfängerkonto überprüfen, um festzustellen, ob die Dateien korrekt übertragen wurden.

Kopieren Sie das folgende Skript und fügen Sie es ein:

$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

Das Skript finden Sie auf dieser Reddit-Seite .

Kann PowerShell auf OneDrive zugreifen?

Mit SharePoint Online PowerShell können Benutzer mithilfe des PowerShell-Tools eine Verbindung zu einem anderen OneDrive-Konto herstellen. Sie werden aufgefordert, Ihr Passwort einzugeben, damit PowerShell mithilfe von Cmdlets mit der Arbeit an Ihren OneDrive-Konten beginnen kann.

Können externe Benutzer auf OneDrive zugreifen?

Auf Ihr OneDrive-Konto können externe Benutzer zugreifen, jedoch nur, wenn Sie dies zulassen. Benutzer können für immer oder für einen festgelegten Zeitraum Zugriff auf Ihre Dateien haben. Sie können auch die Möglichkeiten einschränken.

Wie kopiere ich Dateien vom OneDrive einer anderen Person?

Wenn Sie Dateien vom OneDrive einer anderen Person kopieren möchten, haben Sie folgende Möglichkeiten:

  • Öffnen Sie OneDrive in Ihrem Browser über den Link, wählen Sie die Dateien aus, die Sie kopieren möchten, und klicken Sie auf Herunterladen. Dadurch wird es auf Ihren Computer heruntergeladen.
  • Öffnen Sie das OneDrive-Konto über den Link, wählen Sie die Dateien aus, die Sie kopieren möchten, und klicken Sie auf Kopieren nach.

Das ist es!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert