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

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

Dinge, die man beachten muss

Das Hochladen von Dateien von Ihrem OneDrive auf ein anderes Konto kann eine Weile dauern, da es derzeit nicht möglich ist, Dateien mit einer Größe von mehr als 250 MB hochzuladen. Die gute Nachricht ist, dass PowerShell alle Dateien notiert, die nicht hochgeladen werden können, sodass Sie sie auf normale Weise 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 Gesamtübertragungsgeschwindigkeit von der Qualität des Netzwerks ab.

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 problematische Skript funktioniert, installieren Sie sofort die folgenden PowerShell-Module:

Ö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 des Benutzers 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 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

Suchen Sie nach Microsoft PowerShell

Öffnen Sie Visual Studio Code oder PowerShell.

Klicken Sie dort mit der rechten Maustaste auf die Anwendung und wählen Sie dann die Option aus, mit der das Tool im Administratormodus geöffnet werden soll.

Führen Sie das Skript aus

OneDrive PowerShell-Skript

Anschließend müssen Sie das entsprechende Skript ausführen. Sie finden es am Ende des Artikels.

Wir haben uns dafür entschieden, weil das Skript ziemlich umfangreich ist.

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

Übertragen Sie die Dateien

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

Sie sehen, direkt nachdem Sie die Eingabetaste gedrückt haben, werden Sie aufgefordert, das E-Mail-Konto hinzuzufügen Der Benutzername des abgehenden Benutzers.

Sie werden auch brauchen Der Benutzername des Zielbenutzers. Dies ist der OneDrive-Benutzer, zu dem die Dateien kopiert und übertragen werden.

Abschließend werden Sie aufgefordert, etwas hinzuzufügen Der Benutzername des Office 365-Administrators.

Warten Sie, bis das Skript seine Arbeit erledigt hat, bevor Sie Ihr Download-Konto ü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

Lektüre: So exportieren Sie CSV nach PowerShell unter Windows

Kann PowerShell auf OneDrive zugreifen?

SharePoint Online PowerShell ermöglicht es Benutzern, sich mithilfe des PowerShell-Tools bei einem anderen OneDrive-Konto anzumelden. Sie werden aufgefordert, Ihr Passwort einzugeben, damit PowerShell über 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 auf Ihre Dateien zugreifen. 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 Ihr OneDrive-Konto über den Link, wählen Sie die Dateien aus, die Sie kopieren möchten, und klicken Sie auf Kopieren nach.

Das ist!

Similar Posts