OneDrive-tiedostojen siirtäminen toiselle käyttäjälle PowerShellin kautta

Onedrive Tiedostojen Siirtaminen Toiselle Kayttajalle Powershellin Kautta



Tiedostojen siirtäminen Microsoft OneDrive -tililtäsi toiselle käyttäjälle on helppoa siinä mielessä, että voit ladata sisällön OneDrivesta ja lähettää ne sitten manuaalisesti toiselle tilille. Tässä postauksessa näytämme sinulle, miten siirtää OneDrive-tiedostoja toiselle käyttäjälle PowerShellin kautta .



  OneDrive-tiedostojen siirtäminen toiselle käyttäjälle PowerShellin kautta





Harkittavia asioita

Kun on kyse tiedostojen lataamisesta OneDrivesta toiselle tilille, se kestää jonkin aikaa, koska tällä hetkellä ei ole mahdollista ladata tiedostoja, jotka ovat suurempia kuin 250 Mt. Hyvä uutinen on, että PowerShell tekee muistiin kaikki tiedostot, joita se ei voi ladata, joten voit etsiä ja jakaa ne tavallisella menetelmällä.





Ennen kuin lataat tiedostot toiselle OneDrive-tilille, tiedostot ladataan ensin tietokoneellesi, joten varmista, että sinulla on tarpeeksi tilaa kiintolevylläsi tai SSD-levylläsi ennen kuin siirryt eteenpäin. Ja koska Internet-yhteytesi vaaditaan, tiedonsiirron yleinen nopeus riippuu verkon laadusta.



Nyt meidän on huomattava, että kaksivaiheista todennusta ei ole järjestelmänvalvojan tilillä, joten luo väliaikainen järjestelmänvalvojatili, jossa ei ole 2FA:ta vain tätä tarkoitusta varten.

Asioita, joita tarvitset

Käytämme erityistä komentosarjaa tiedostojen siirtämiseen OneDrive-tililtä toiselle. Joten, jotta komentosarja toimisi ongelmien kanssa, asenna seuraavat PowerShell-moduulit heti:

SharePoint PnP PowerShell -moduuli



Avaa PowerShell-työkalu järjestelmänvalvojana ja suorita seuraava komento:

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online Management Shell

Tämän työkalun tarkoituksena on muokata käyttäjien OneDrive-tilin käyttöoikeuksia.

Lataa ja asenna se ilmaiseksi osoitteesta microsoft.com .

MSOnline V1 Powershell-moduuli

Asenna tämä viimeinen moduuli suorittamalla seuraava komento PowerShellissä järjestelmänvalvojana:

Install-Module MSOnline -Force

OneDrive-tiedostojen siirtäminen toiselle tilille

Jos haluat siirtää tiedostoja OneDrive-tililtäsi toiselle, sinun on avattava PowerShell ja suoritettava sitten toimitettu komentosarja.

Avaa PowerShell

  Microsoft PowerShell -haku

Avaa Visual Studio Code tai PowerShell.

Voit tehdä tämän napsauttamalla Hae-painiketta ja etsimällä sitten PowerShell.

Napsauta sieltä hiiren kakkospainikkeella sovellusta ja valitse vaihtoehto, joka on suunniteltu avaamaan työkalu järjestelmänvalvojatilassa.

Suorita skripti

  OneDrive PowerShell Script

Seuraavaksi sinun on suoritettava asianmukainen komentosarja. Löydät sen artikkelin alaosasta.

Päätimme tehdä tämän, koska käsikirjoitus on melko pitkä.

Kun olet lisännyt komentosarjan, paina näppäimistön Enter-näppäintä.

piraattikäyttöjärjestelmä

Siirrä tiedostot

Lopuksi on aika siirtää tiedostot toiselle OneDrive-tilille.

Näet, heti Enter-näppäimen painamisen jälkeen sinua pyydetään lisäämään sähköpostitili Lähtevän käyttäjän käyttäjänimi .

Tarvitset myös Kohdekäyttäjän käyttäjänimi . Tämä on OneDrive-käyttäjä, jolle tiedostot kopioidaan ja siirretään.

Lopuksi sinua pyydetään lisäämään Office 365 -järjestelmänvalvojan käyttäjänimi .

Odota, että komentosarja tekee tehtävänsä, ennen kuin tarkistat vastaanottavan tilin nähdäksesi, onko tiedostot siirretty oikein.

Kopioi ja liitä alla oleva komentosarja:

$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

Löydät käsikirjoituksen tästä Reddit sivu .

LUKEA : CSV:n vieminen PowerShellissä Windowsissa

Voiko PowerShell käyttää OneDrivea?

SharePoint Online PowerShellin avulla käyttäjät voivat muodostaa yhteyden toiseen OneDrive-tiliin PowerShell-työkalun avulla. Se pyytää sinua lisäämään salasanasi, jotta PowerShell voi alkaa työskennellä OneDrive-tililläsi cmdlet-komentojen avulla.

Voivatko ulkoiset käyttäjät käyttää OneDrivea?

Ulkopuoliset käyttäjät voivat käyttää OneDrive-tiliäsi, mutta vain jos sallit sen. Käyttäjillä on pääsy tiedostoihisi ikuisesti tai tietyn ajanjakson ajan. Voit myös rajoittaa heidän tekemistään.

Kuinka kopioida tiedostoja toisen henkilön OneDrivesta?

Sinulla on seuraavat vaihtoehdot, jos haluat kopioida tiedostoja toisen henkilön OneDrivesta:

  • Avaa OneDrive selaimessasi linkin avulla, valitse kopioitavat tiedostot ja napsauta Lataa. Tämä lataa sen tietokoneellesi.
  • Avaa OneDrive-tili linkin avulla, valitse tiedostot, jotka haluat kopioida, ja napsauta Kopioi kohteeseen.

Se siitä!

  OneDrive-tiedostojen siirtäminen toiselle käyttäjälle PowerShellin kautta
Suosittu Viestiä