Hur man överför OneDrive-filer till en annan användare via PowerShell

Hur Man Overfor Onedrive Filer Till En Annan Anvandare Via Powershell



Att överföra filer från ditt Microsoft OneDrive-konto till en annan användare är enkelt i den meningen att du kan ladda ner innehållet från din OneDrive och sedan ladda upp dem manuellt till det andra kontot. I det här inlägget kommer vi att visa dig hur du gör överföra OneDrive-filer till en annan användare via PowerShell .



  Hur man överför OneDrive-filer till en annan användare via PowerShell





Saker att tänka på

När det kommer till att ladda upp filer från din OneDrive till ett annat konto är det en uppgift som kommer att ta lite tid eftersom det för närvarande inte är möjligt att ladda upp filer som är större än 250 MB. Den goda nyheten är att PowerShell kommer att anteckna alla filer som den inte kan ladda upp, så att du kan söka upp dem och dela dem via den vanliga metoden.





Innan du laddar upp filerna till det andra OneDrive-kontot kommer filerna först att laddas ner till din dator, så se till att du har tillräckligt med utrymme på din hårddisk eller SSD innan du går vidare. Och eftersom din internetanslutning krävs, kommer den totala överföringshastigheten att bero på kvaliteten på nätverket.



Nu måste vi notera att tvåfaktorsautentisering inte finns på administratörskontot, så skapa ett tillfälligt administratörskonto som inte har 2FA endast för detta ändamål.

Saker du behöver

Vi kommer att använda ett speciellt skript för att flytta filerna från ett OneDrive-konto till ett annat. Så för att skriptet ska fungera med problem, installera följande PowerShell-moduler just nu:

SharePoint PnP PowerShell-modul



Öppna PowerShell-verktyget som admin och kör sedan följande kommando:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online Management Shell

Syftet med detta verktyg är att ändra behörigheterna på användarens OneDrive-konto.

Ladda ner och installera det gratis från microsoft.com .

lava mjuk annons medveten gratis

MSOnline V1 Powershell-modul

För att installera den här sista modulen, kör följande kommando i PowerShell som admin:

Install-Module MSOnline -Force

Hur man överför OneDrive-filer till ett annat konto

För att överföra filer från ditt OneDrive-konto till ett annat måste du öppna PowerShell och sedan köra det medföljande skriptet.

Öppna PowerShell

  Microsoft PowerShell-sökning

Öppna Visual Studio Code eller PowerShell.

Du kan göra detta genom att klicka på knappen Sök och sedan söka efter PowerShell.

Därifrån högerklickar du på appen och väljer sedan alternativet som är utformat för att öppna verktyget i adminläge.

wifi lösenordssökare för pc

Kör skriptet

  OneDrive PowerShell-skript

Därefter måste du köra det relevanta skriptet. Du hittar den längst ner i artikeln.

Vi valde att göra detta eftersom manuset är ganska långt.

När du har lagt till skriptet, tryck på Enter-tangenten på ditt tangentbord.

Överför filerna

Äntligen är det nu dags att överföra filerna till ett annat OneDrive-konto.

Du ser, direkt efter att du tryckt på Enter-tangenten kommer du att bli ombedd att lägga till e-postkontot Användarnamnet för den avgående användaren .

Du kommer också att behöva Användarnamnet för destinationsanvändaren . Det här är OneDrive-användaren dit filerna kommer att kopieras och överföras till.

Slutligen kommer du att bli ombedd att lägga till Användarnamnet för din Office 365-administratör .

Vänta tills skriptet gör sitt innan du kontrollerar det mottagande kontot för att se om filerna överfördes korrekt.

Kopiera och klistra in nedanstående skript:

$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

Du kan hitta manuset på detta Reddit sida .

LÄSA : Hur man exporterar CSV i PowerShell på Windows

Kan PowerShell komma åt OneDrive?

SharePoint Online PowerShell kommer att göra det möjligt för användare att ansluta till ett annat OneDrive-konto med hjälp av PowerShell-verktyget. Den kommer att be dig att ange ditt lösenord för att PowerShell ska börja arbeta på dina OneDrive-konton med hjälp av cmdlets.

borttagen skrivare visar fortfarande fönster 10

Kan OneDrive nås av externa användare?

Ditt OneDrive-konto kan nås av externa användare, men bara om du tillåter det. Användare kan ha tillgång till dina filer för alltid eller under en viss tidsperiod. Du kan också begränsa vad de kan göra.

Hur kopierar man filer från en annan persons OneDrive?

Du har följande alternativ om du vill kopiera filer från en annan persons OneDrive:

  • Öppna OneDrive i din webbläsare med hjälp av länken, välj de filer du vill kopiera och klicka på Ladda ner. Detta kommer att ladda ner det till din dator.
  • Öppna OneDrive-kontot med länken, välj de filer du vill kopiera och klicka på Kopiera till.

Det är allt!

  Hur man överför OneDrive-filer till en annan användare via PowerShell
Populära Inlägg