Cómo transferir archivos de OneDrive a otro usuario a través de PowerShell

Como Transferir Archivos De Onedrive A Otro Usuario A Traves De Powershell



Transferir archivos de su cuenta de Microsoft OneDrive a otro usuario es fácil en el sentido de que puede descargar el contenido de su OneDrive y luego cargarlo manualmente en la otra cuenta. En esta publicación, le mostraremos cómo transferir archivos OneDrive a otro usuario a través de PowerShell .



  Cómo transferir archivos de OneDrive a otro usuario a través de PowerShell





Cosas para considerar

Cuando se trata de cargar archivos desde su OneDrive a otra cuenta, es una tarea que llevará algún tiempo porque no es posible en este momento cargar archivos de más de 250 MB. La buena noticia es que PowerShell tomará nota de todos los archivos que no puede cargar, para que pueda buscarlos y compartirlos mediante el método habitual.





Antes de cargar los archivos a la otra cuenta de OneDrive, los archivos se descargarán primero a su computadora, así que asegúrese de tener suficiente espacio en su disco duro o SSD antes de continuar. Y dado que se requiere su conexión a Internet, la velocidad general de transferencia dependerá de la calidad de la red.



Ahora, debemos tener en cuenta que la autenticación de dos factores no existe en la cuenta de administrador, así que cree una cuenta de administrador temporal que no tenga 2FA solo para este propósito.

cosas que necesitarás

Usaremos un script especial para mover los archivos de una cuenta de OneDrive a otra. Entonces, para que la secuencia de comandos funcione con problemas, instale los siguientes módulos de PowerShell ahora mismo:

Módulo PowerShell PnP de SharePoint



Abra la herramienta PowerShell como administrador, luego ejecute el siguiente comando:

Install-Module SharePointPnPPowerShellOnline -Force

Shell de administración en línea de SharePoint

El propósito de esta herramienta es modificar los permisos en la cuenta de OneDrive de los usuarios.

ocr en google drive

Descárgalo e instálalo gratis desde microsoft.com .

Módulo MSOnline V1 Powershell

Para instalar este módulo final, ejecute el siguiente comando en PowerShell como administrador:

Install-Module MSOnline -Force

Cómo transferir archivos de OneDrive a otra cuenta

Para transferir archivos de su cuenta OneDrive a otra, debe abrir PowerShell y luego ejecutar el script proporcionado.

Abrir PowerShell

  Búsqueda de Microsoft PowerShell

Abra Visual Studio Code o PowerShell.

Puede hacer esto haciendo clic en el botón Buscar, luego busque PowerShell.

Desde allí, haga clic derecho en la aplicación, luego seleccione la opción diseñada para abrir la herramienta en modo Administrador.

Ejecutar el script

  Secuencia de comandos de PowerShell de OneDrive

A continuación, debe ejecutar el script correspondiente. Puedes encontrarlo al final del artículo.

Elegimos hacer esto porque el guión es bastante largo.

Después de agregar el script, presione la tecla Intro en su teclado.

mostrar extensiones de archivo windows 10

Transferir los archivos

Finalmente, ahora es el momento de transferir los archivos a otra cuenta de OneDrive.

Verá, justo después de presionar la tecla Intro, se le pedirá que agregue la cuenta de correo electrónico El nombre de usuario del usuario saliente .

también necesitarás El nombre de usuario del usuario de destino. . Este es el usuario de OneDrive al que se copiarán y transferirán los archivos.

Finalmente, se le pedirá que agregue El nombre de usuario de su administrador de Office 365 .

Espere a que el script haga su trabajo antes de verificar la cuenta receptora para ver si los archivos se transfirieron correctamente.

Copie y pegue el siguiente script:

$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

Puedes encontrar el guión en este página de Reddit .

LEER Cómo exportar CSV en PowerShell en Windows

¿Puede PowerShell acceder a OneDrive?

SharePoint Online PowerShell hará posible que los usuarios se conecten a otra cuenta de OneDrive mediante la herramienta PowerShell. Te pedirá que insertes tu contraseña para que PowerShell comience a trabajar en tus cuentas de OneDrive por medio de cmdlets.

¿Los usuarios externos pueden acceder a OneDrive?

Los usuarios externos pueden acceder a su cuenta de OneDrive, pero solo si usted lo permite. Los usuarios pueden tener acceso a sus archivos para siempre o por un período de tiempo determinado. También puede limitar lo que pueden hacer.

¿Cómo copiar archivos del OneDrive de otra persona?

Tiene las siguientes opciones si desea copiar archivos del OneDrive de otra persona:

  • Abra OneDrive en su navegador usando el enlace, seleccione los archivos que desea copiar y haga clic en Descargar. Esto lo descargará a su computadora.
  • Abra la cuenta de OneDrive usando el enlace, seleccione los archivos que desea copiar y haga clic en Copiar a.

¡Eso es todo!

  Cómo transferir archivos de OneDrive a otro usuario a través de PowerShell
Entradas Populares