Ako preniesť súbory OneDrive na iného používateľa cez PowerShell

Ako Preniest Subory Onedrive Na Ineho Pouzivatela Cez Powershell



Prenos súborov z konta Microsoft OneDrive na iného používateľa je jednoduchý v tom zmysle, že si môžete stiahnuť obsah z OneDrive a potom ho manuálne nahrať do druhého konta. V tomto príspevku vám ukážeme, ako na to preniesť súbory OneDrive inému používateľovi cez PowerShell .



  Ako preniesť súbory OneDrive na iného používateľa cez PowerShell





Veci na zváženie

Pokiaľ ide o nahrávanie súborov z OneDrive do iného účtu, je to úloha, ktorá bude chvíľu trvať, pretože v súčasnosti nie je možné nahrať súbory väčšie ako 250 MB. Dobrou správou je, že PowerShell si zaznamená všetky súbory, ktoré nemôže nahrať, takže ich môžete vyhľadať a zdieľať bežným spôsobom.





Pred odovzdaním súborov do iného konta OneDrive sa súbory najskôr stiahnu do počítača, preto sa pred ďalším krokom uistite, že máte na pevnom disku alebo SSD dostatok miesta. A keďže je potrebné vaše internetové pripojenie, celková rýchlosť prenosu bude závisieť od kvality siete.



Teraz musíme poznamenať, že na účte správcu neexistuje dvojfaktorová autentifikácia, preto si vytvorte dočasný účet správcu, ktorý nemá 2FA iba na tento účel.

Veci, ktoré budete potrebovať

Na presun súborov z jedného účtu OneDrive do druhého použijeme špeciálny skript. Aby skript fungoval s problémami, nainštalujte si hneď teraz nasledujúce moduly PowerShell:

SharePoint PnP PowerShell modul



Otvorte nástroj PowerShell ako správca a potom spustite nasledujúci príkaz:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online Management Shell

Účelom tohto nástroja je upraviť povolenia na používateľskom účte OneDrive.

Stiahnite si a nainštalujte ho zadarmo z microsoft.com .

Modul Powershell MSOnline V1

Ak chcete nainštalovať tento posledný modul, spustite nasledujúci príkaz v prostredí PowerShell ako správca:

Install-Module MSOnline -Force

Ako preniesť súbory OneDrive do iného účtu

Ak chcete preniesť súbory z účtu OneDrive do iného, ​​musíte otvoriť PowerShell a potom spustiť poskytnutý skript.

odkazovaný účet je momentálne uzamknutý

Otvorte PowerShell

  Microsoft PowerShell Search

Otvorte kód Visual Studio alebo PowerShell.

Môžete to urobiť kliknutím na tlačidlo Hľadať a potom vyhľadať PowerShell.

Odtiaľ kliknite pravým tlačidlom myši na aplikáciu a vyberte možnosť určenú na otvorenie nástroja v režime správcu.

Spustite skript

  OneDrive PowerShell Script

Ďalej musíte spustiť príslušný skript. Nájdete ho v spodnej časti článku.

Rozhodli sme sa to urobiť, pretože scenár je dosť dlhý.

viac účtov onedrive

Po pridaní skriptu stlačte kláves Enter na klávesnici.

Preneste súbory

Nakoniec je čas preniesť súbory do iného účtu OneDrive.

Vidíte, hneď po stlačení klávesu Enter sa zobrazí výzva na pridanie e-mailového účtu Používateľské meno odchádzajúceho používateľa .

Budete tiež potrebovať Používateľské meno cieľového používateľa . Toto je používateľ OneDrive, do ktorého sa skopírujú a prenesú súbory.

Nakoniec sa zobrazí výzva na pridanie Používateľské meno vášho správcu Office 365 .

Pred kontrolou prijímajúceho účtu počkajte, kým skript urobí svoju prácu, aby ste zistili, či boli súbory prenesené správne.

Skopírujte a prilepte nasledujúci 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

Scenár nájdete na tomto Stránka Reddit .

ČÍTAŤ : Ako exportovať CSV v PowerShell v systéme Windows

Má PowerShell prístup k OneDrive?

SharePoint Online PowerShell umožní používateľom pripojiť sa k inému kontu OneDrive pomocou nástroja PowerShell. Požiada vás o vloženie hesla, aby PowerShell začal pracovať na vašich účtoch OneDrive prostredníctvom cmdletov.

Môžu k OneDrive pristupovať aj externí používatelia?

K vášmu účtu OneDrive môžu pristupovať externí používatelia, ale iba ak to povolíte. Používatelia môžu mať prístup k vašim súborom navždy alebo na určité časové obdobie. Môžete tiež obmedziť to, čo môžu robiť.

Ako kopírovať súbory z OneDrive inej osoby?

Ak chcete kopírovať súbory z OneDrive inej osoby, máte nasledujúce možnosti:

  • Otvorte OneDrive v prehliadači pomocou odkazu, vyberte súbory, ktoré chcete skopírovať, a kliknite na Stiahnuť. Tým sa stiahne do vášho počítača.
  • Otvorte konto OneDrive pomocou prepojenia, vyberte súbory, ktoré chcete skopírovať, a kliknite na položku Kopírovať do.

To je všetko!

  Ako preniesť súbory OneDrive na iného používateľa cez PowerShell
Populárne Príspevky