Com transferir fitxers OneDrive a un altre usuari mitjançant PowerShell

Com Transferir Fitxers Onedrive A Un Altre Usuari Mitjancant Powershell



Transferir fitxers del vostre compte de Microsoft OneDrive a un altre usuari és fàcil en el sentit que podeu descarregar el contingut del vostre OneDrive i, a continuació, carregar-los manualment a l'altre compte. En aquesta publicació, us mostrarem com fer-ho transferir fitxers OneDrive a un altre usuari mitjançant PowerShell .



  Com transferir fitxers OneDrive a un altre usuari mitjançant PowerShell





Coses a tenir en compte

Quan es tracta de pujar fitxers del vostre OneDrive a un altre compte, és una tasca que trigarà un temps perquè en aquest moment no és possible carregar fitxers de més de 250 MB. La bona notícia és que PowerShell anotarà tots els fitxers que no pot carregar, de manera que els podeu cercar i compartir-los mitjançant el mètode habitual.





Abans de carregar els fitxers a l'altre compte de OneDrive, primer es baixaran a l'ordinador, així que assegureu-vos que teniu prou espai al disc dur o SSD abans de seguir endavant. I com que es requereix la vostra connexió a Internet, la velocitat general de transferència dependrà de la qualitat de la xarxa.



Ara, hem de tenir en compte que l'autenticació de dos factors no existeix al compte d'administrador, així que creeu un compte d'administrador temporal que no tingui 2FA només per a aquest propòsit.

Coses que necessitareu

Utilitzarem un script especial per moure els fitxers d'un compte de OneDrive a un altre. Per tant, perquè l'script funcioni amb problemes, instal·leu els mòduls PowerShell següents ara mateix:

Mòdul PowerShell PnP de SharePoint



Obriu l'eina PowerShell com a administrador i executeu l'ordre següent:

Install-Module SharePointPnPPowerShellOnline -Force

Shell de gestió de SharePoint Online

L'objectiu d'aquesta eina és modificar els permisos del compte OneDrive dels usuaris.

Baixeu-lo i instal·leu-lo gratuïtament des de microsoft.com .

Mòdul Powershell MSOnline V1

Per instal·lar aquest mòdul final, executeu l'ordre següent a PowerShell com a administrador:

Install-Module MSOnline -Force

Com transferir fitxers OneDrive a un altre compte

Per transferir fitxers del vostre compte de OneDrive a un altre, heu d'obrir PowerShell i, a continuació, executar l'script proporcionat.

Obriu PowerShell

  Cerca de Microsoft PowerShell

Obriu Visual Studio Code o PowerShell.

Podeu fer-ho fent clic al botó Cerca i després cerqueu PowerShell.

A partir d'aquí, feu clic amb el botó dret a l'aplicació i, a continuació, seleccioneu l'opció dissenyada per obrir l'eina en mode d'administració.

Executeu l'script

  OneDrive PowerShell Script

A continuació, heu d'executar l'script corresponent. El podeu trobar al final de l'article.

restringir l'edició

Hem escollit fer-ho perquè el guió és força llarg.

Després d'afegir l'script, premeu la tecla Enter al vostre teclat.

Transfereix els fitxers

Finalment, ara és el moment de transferir els fitxers a un altre compte de OneDrive.

Ja veieu, just després de prémer la tecla Enter, se us demanarà que afegiu el compte de correu electrònic El nom d'usuari de l'usuari que surt .

També necessitareu El nom d'usuari de l'usuari de destinació . Aquest és l'usuari de OneDrive on es copiaran i transferiran els fitxers.

Finalment, se us demanarà que afegiu El nom d'usuari del vostre administrador d'Office 365 .

Espereu que l'script faci les seves coses abans de comprovar el compte receptor per veure si els fitxers s'han transferit correctament.

Copieu i enganxeu l'script següent:

$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

Podeu trobar el guió en això Pàgina de Reddit .

LLEGIR : Com exportar CSV a PowerShell a Windows

Pot PowerShell accedir a OneDrive?

SharePoint Online PowerShell permetrà que els usuaris es connectin a un altre compte de OneDrive mitjançant l'eina PowerShell. Us demanarà que inseriu la vostra contrasenya per tal que PowerShell comenci a treballar als vostres comptes d'OneDrive mitjançant cmdlets.

Els usuaris externs poden accedir a OneDrive?

Els usuaris externs poden accedir al vostre compte de OneDrive, però només si ho permeteu. Els usuaris poden tenir accés als vostres fitxers per sempre o durant un període de temps determinat. També podeu limitar el que poden fer.

Com copiar fitxers del OneDrive d'una altra persona?

Teniu les opcions següents si voleu copiar fitxers del OneDrive d'una altra persona:

  • Obriu OneDrive al vostre navegador mitjançant l'enllaç, seleccioneu els fitxers que voleu copiar i feu clic a Descarrega. Això el descarregarà al vostre ordinador.
  • Obriu el compte de OneDrive mitjançant l'enllaç, seleccioneu els fitxers que voleu copiar i feu clic a Copia a.

Això és!

  Com transferir fitxers OneDrive a un altre usuari mitjançant PowerShell
Entrades Populars