Jak přenést soubory OneDrive jinému uživateli přes PowerShell

Jak Prenest Soubory Onedrive Jinemu Uzivateli Pres Powershell



Přenos souborů z účtu Microsoft OneDrive na jiného uživatele je snadný v tom smyslu, že si můžete stáhnout obsah z OneDrivu a poté je ručně nahrát do druhého účtu. V tomto příspěvku vám ukážeme, jak na to přenést soubory OneDrive jinému uživateli přes PowerShell .



  Jak přenést soubory OneDrive jinému uživateli přes PowerShell





Věci ke zvážení

Pokud jde o nahrávání souborů z OneDrive na jiný účet, je to úkol, který bude nějakou dobu trvat, protože v tuto chvíli není možné nahrávat soubory větší než 250 MB. Dobrou zprávou je, že PowerShell si poznamená všechny soubory, které nemůže nahrát, takže je můžete vyhledávat a sdílet běžnou metodou.





Před nahráním souborů na druhý účet OneDrive se soubory nejprve stáhnou do vašeho počítače, takže se před pokračováním ujistěte, že máte na pevném disku nebo SSD dostatek místa. A protože je vyžadováno vaše připojení k internetu, bude celková rychlost přenosu záviset na kvalitě sítě.



Nyní musíme poznamenat, že na účtu správce neexistuje dvoufaktorová autentizace, takže si vytvořte dočasný účet správce, který nemá 2FA pouze pro tento účel.

Věci, které budete potřebovat

K přesunutí souborů z jednoho účtu OneDrive do druhého použijeme speciální skript. Aby skript fungoval s problémy, nainstalujte si prosím následující moduly PowerShell hned teď:

apache open office powerpoint

Modul SharePoint PnP PowerShell



Otevřete nástroj PowerShell jako správce a spusťte následující příkaz:

Install-Module SharePointPnPPowerShellOnline -Force

Shell pro správu SharePoint Online

Účelem tohoto nástroje je upravit oprávnění na účtu OneDrive uživatelů.

Stáhněte a nainstalujte jej zdarma z microsoft.com .

Modul Powershell MSOnline V1

Chcete-li nainstalovat tento konečný modul, spusťte následující příkaz v prostředí PowerShell jako správce:

Install-Module MSOnline -Force

Jak přenést soubory OneDrive na jiný účet

Chcete-li přenést soubory z účtu OneDrive do jiného, ​​musíte otevřít PowerShell a poté spustit poskytnutý skript.

Otevřete PowerShell

  Microsoft PowerShell Search

Otevřete Visual Studio Code nebo PowerShell.

Můžete to udělat kliknutím na tlačítko Hledat a poté vyhledat PowerShell.

Odtud klikněte pravým tlačítkem myši na aplikaci a vyberte možnost navrženou k otevření nástroje v režimu správce.

Spusťte skript

  OneDrive PowerShell Script

Dále musíte spustit příslušný skript. Najdete ho dole v článku.

Rozhodli jsme se to udělat, protože scénář je poměrně dlouhý.

další tlačítka myši

Po přidání skriptu stiskněte klávesu Enter na klávesnici.

Přeneste soubory

Konečně je čas přenést soubory na jiný účet OneDrive.

Vidíte, hned po stisknutí klávesy Enter budete požádáni o přidání e-mailového účtu Uživatelské jméno odcházejícího uživatele .

Budete také potřebovat Uživatelské jméno cílového uživatele . Toto je uživatel OneDrive, kam budou soubory zkopírovány a přeneseny.

Nakonec budete požádáni o přidání Uživatelské jméno vašeho správce Office 365 .

Před kontrolou přijímajícího účtu, zda byly soubory přeneseny správně, počkejte, až skript udělá svou věc.

Zkopírujte a vložte níže uvedený skript:

$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

Skript najdete na tomto Stránka Reddit .

ČÍST : Jak exportovat CSV v PowerShellu na Windows

Má PowerShell přístup k OneDrive?

SharePoint Online PowerShell umožní uživatelům připojit se k jinému účtu OneDrive pomocí nástroje PowerShell. Požádá vás o vložení hesla, aby PowerShell začal pracovat na vašich účtech OneDrive pomocí rutin.

Mohou k OneDrive přistupovat externí uživatelé?

K vašemu účtu OneDrive mohou přistupovat externí uživatelé, ale pouze pokud to povolíte. Uživatelé mohou mít přístup k vašim souborům navždy nebo po stanovenou dobu. Můžete také omezit, co mohou dělat.

Jak kopírovat soubory z OneDrive jiné osoby?

Pokud chcete zkopírovat soubory z OneDrive jiné osoby, máte následující možnosti:

  • Otevřete OneDrive v prohlížeči pomocí odkazu, vyberte soubory, které chcete zkopírovat, a klikněte na Stáhnout. Tím se stáhne do vašeho počítače.
  • Otevřete účet OneDrive pomocí odkazu, vyberte soubory, které chcete zkopírovat, a klikněte na Kopírovat do.

A je to!

  Jak přenést soubory OneDrive jinému uživateli přes PowerShell
Populární Příspěvky