Como transferir arquivos do OneDrive para outro usuário via PowerShell

Como Transferir Arquivos Do Onedrive Para Outro Usuario Via Powershell



A transferência de arquivos da sua conta do Microsoft OneDrive para outro usuário é fácil, pois você pode baixar o conteúdo do OneDrive e carregá-lo manualmente para a outra conta. Neste post, mostraremos como transferir arquivos do OneDrive para outro usuário via PowerShell .



  Como transferir arquivos do OneDrive para outro usuário via PowerShell





Coisas a considerar

Quando se trata de carregar arquivos do seu OneDrive para outra conta, é uma tarefa que levará algum tempo porque não é possível neste momento carregar arquivos maiores que 250 MB. A boa notícia é que o PowerShell anotará todos os arquivos que não puder carregar, para que você possa procurá-los e compartilhá-los por meio do método normal.





Antes de carregar os arquivos para a outra conta do OneDrive, os arquivos serão baixados primeiro para o seu computador, portanto, certifique-se de ter espaço suficiente no disco rígido ou no SSD antes de prosseguir. E como sua conexão com a Internet é necessária, a velocidade geral da transferência dependerá da qualidade da rede.



Agora, devemos observar que a autenticação de dois fatores não existe na conta de administrador, portanto, crie uma conta de administrador temporária que não tenha 2FA apenas para essa finalidade.

Coisas que você vai precisar

Usaremos um script especial para mover os arquivos de uma conta do OneDrive para outra. Portanto, para que o script funcione com problemas, instale os seguintes módulos do PowerShell agora mesmo:

Módulo PowerShell PnP do SharePoint



Abra a ferramenta PowerShell como administrador e execute o seguinte comando:

Install-Module SharePointPnPPowerShellOnline -Force

Shell de gerenciamento do SharePoint Online

O objetivo desta ferramenta é modificar as permissões na conta OneDrive dos usuários.

Faça o download e instale-o gratuitamente em microsoft.com .

Módulo MSOnline V1 Powershell

Para instalar este módulo final, execute o seguinte comando no PowerShell como administrador:

como fazer uma playlist no youtube sem uma conta
Install-Module MSOnline -Force

Como transferir arquivos do OneDrive para outra conta

Para transferir arquivos de sua conta do OneDrive para outra, você deve abrir o PowerShell e executar o script fornecido.

Abra o PowerShell

  Pesquisa do Microsoft PowerShell

Abra o Visual Studio Code ou PowerShell.

Você pode fazer isso clicando no botão Pesquisar e, em seguida, pesquisar por PowerShell.

A partir daí, clique com o botão direito do mouse no aplicativo e selecione a opção projetada para abrir a ferramenta no modo Admin.

Execute o script

  Script do PowerShell do OneDrive

Em seguida, você deve executar o script relevante. Você pode encontrá-lo na parte inferior do artigo.

Escolhemos fazer isso porque o roteiro é bastante longo.

Depois de adicionar o script, pressione a tecla Enter no teclado.

Transfira os arquivos

Finalmente, agora é hora de transferir os arquivos para outra conta do OneDrive.

Veja bem, logo após pressionar a tecla Enter, você será solicitado a adicionar a conta de e-mail O nome de usuário do usuário que está saindo .

Você também vai precisar O nome de usuário do usuário de destino . Este é o usuário do OneDrive para o qual os arquivos serão copiados e transferidos.

Finalmente, você será solicitado a adicionar O nome de usuário do administrador do Office 365 .

Aguarde até que o script faça seu trabalho antes de verificar a conta de recebimento para ver se os arquivos foram transferidos corretamente.

Copie e cole o script abaixo:

$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

Você pode encontrar o script neste página do Reddit .

LER : Como exportar CSV no PowerShell no Windows

O PowerShell pode acessar o OneDrive?

O PowerShell do SharePoint Online possibilitará que os usuários se conectem a outra conta do OneDrive usando a ferramenta PowerShell. Ele solicitará que você insira sua senha para que o PowerShell comece a trabalhar em suas contas do OneDrive por meio de cmdlets.

O OneDrive pode ser acessado por usuários externos?

Sua conta OneDrive pode ser acessada por usuários externos, mas somente se você permitir. Os usuários podem ter acesso aos seus arquivos para sempre ou por um período de tempo definido. Você também pode limitar o que eles podem fazer.

Como copiar arquivos do OneDrive de outra pessoa?

Você tem as seguintes opções se quiser copiar arquivos do OneDrive de outra pessoa:

  • Abra o OneDrive em seu navegador usando o link, selecione os arquivos que deseja copiar e clique em Download. Isso fará o download para o seu computador.
  • Abra a conta do OneDrive usando o link, selecione os arquivos que deseja copiar e clique em Copiar para.

É isso!

  Como transferir arquivos do OneDrive para outro usuário via PowerShell
Publicações Populares