Hvordan overføre OneDrive-filer til en annen bruker via PowerShell

Hvordan Overfore Onedrive Filer Til En Annen Bruker Via Powershell



Å overføre filer fra Microsoft OneDrive-kontoen din til en annen bruker er enkelt i den forstand at du kan laste ned innholdet fra OneDrive og deretter manuelt laste dem opp til den andre kontoen. I dette innlegget vil vi vise deg hvordan overføre OneDrive-filer til en annen bruker via PowerShell .



  Hvordan overføre OneDrive-filer til en annen bruker via PowerShell





Ting å vurdere

Når det kommer til å laste opp filer fra OneDrive til en annen konto, er det en oppgave som vil ta litt tid fordi det for øyeblikket ikke er mulig å laste opp filer som er større enn 250 MB. Den gode nyheten er at PowerShell vil notere alle filene den ikke kan laste opp, slik at du kan finne dem og dele dem via den vanlige metoden.





aktivere Windows-nøkkel

Før du laster opp filene til den andre OneDrive-kontoen, vil filene først lastes ned til datamaskinen din, så sørg for at du har nok plass på harddisken eller SSD-en før du går videre. Og siden internettforbindelsen din er nødvendig, vil den generelle overføringshastigheten avhenge av kvaliteten på nettverket.



Nå må vi merke oss at tofaktorautentisering ikke eksisterer på administratorkontoen, så opprett en midlertidig adminkonto som ikke har 2FA kun for dette formålet.

Ting du trenger

Vi vil bruke et spesielt skript for å flytte filene fra én OneDrive-konto til en annen. Så for at skriptet skal fungere med problemer, installer følgende PowerShell-moduler akkurat nå:

SharePoint PnP PowerShell-modul



Åpne PowerShell-verktøyet som administrator, og kjør deretter følgende kommando:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online Management Shell

Formålet med dette verktøyet er å endre tillatelsene på brukernes OneDrive-konto.

Last ned og installer det gratis fra microsoft.com .

MSOnline V1 Powershell-modul

For å installere denne siste modulen, kjør følgende kommando i PowerShell som administrator:

Install-Module MSOnline -Force

Hvordan overføre OneDrive-filer til en annen konto

For å overføre filer fra OneDrive-kontoen din til en annen, må du åpne PowerShell og deretter kjøre det medfølgende skriptet.

Åpne PowerShell

  Microsoft PowerShell-søk

Åpne Visual Studio Code, eller PowerShell.

Du kan gjøre dette ved å klikke på Søk-knappen, og deretter søke etter PowerShell.

Derfra høyreklikker du på appen, og velg deretter alternativet designet for å åpne verktøyet i administrasjonsmodus.

Kjør skriptet

  OneDrive PowerShell-skript

Deretter må du kjøre det relevante skriptet. Du finner den nederst i artikkelen.

Vi valgte å gjøre dette fordi manuset er ganske langt.

hvordan du låser deler av et orddokument

Etter å ha lagt til skriptet, trykk Enter-tasten på tastaturet.

Overfør filene

Endelig er det nå på tide å overføre filene til en annen OneDrive-konto.

Du ser, rett etter å ha trykket på Enter-tasten, vil du bli bedt om å legge til e-postkontoen Brukernavnet til den avgående brukeren .

Du trenger også Brukernavnet til destinasjonsbrukeren . Dette er OneDrive-brukeren som filene vil bli kopiert og overført til.

Til slutt blir du bedt om å legge til Brukernavnet til Office 365 Admin .

Vent til skriptet gjør sitt før du sjekker mottakerkontoen for å se om filene ble overført på riktig måte.

Kopier og lim inn skriptet nedenfor:

$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 finner manuset på denne Reddit-side .

LESE : Hvordan eksportere CSV i PowerShell på Windows

Kan PowerShell få tilgang til OneDrive?

SharePoint Online PowerShell vil gjøre det mulig for brukere å koble til en annen OneDrive-konto ved hjelp av PowerShell-verktøyet. Den vil be deg om å sette inn passordet ditt for at PowerShell skal begynne å jobbe med OneDrive-kontoene dine ved hjelp av cmdlets.

Kan eksterne brukere få tilgang til OneDrive?

OneDrive-kontoen din kan nås av eksterne brukere, men bare hvis du tillater det. Brukere kan ha tilgang til filene dine for alltid eller for en bestemt tidsperiode. Du kan også begrense hva de kan gjøre.

Hvordan kopiere filer fra en annen persons OneDrive?

Du har følgende alternativer hvis du vil kopiere filer fra en annen persons OneDrive:

  • Åpne OneDrive i nettleseren din ved å bruke lenken, velg filene du vil kopiere og klikk på Last ned. Dette vil laste den ned til datamaskinen din.
  • Åpne OneDrive-kontoen ved å bruke koblingen, velg filene du vil kopiere, og klikk på Kopier til.

Det er det!

hvordan du deaktiverer nettverkstilgang til Windows-registret
  Hvordan overføre OneDrive-filer til en annen bruker via PowerShell
Populære Innlegg