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

Cómo transferir archivos de OneDrive a otro usuario a través 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 .

Cosas para considerar

Cuando se trata de cargar archivos desde su OneDrive a otra cuenta, es una tarea que llevará algún tiempo porque en este momento no es posible 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.

Descárguelo e instálelo 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.

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 que se va .

También necesitará 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

Puede encontrar el guión en esta página de Reddit .

¿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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *