Cara memindahkan fail OneDrive kepada pengguna lain melalui PowerShell

Cara Memindahkan Fail Onedrive Kepada Pengguna Lain Melalui Powershell



Memindahkan fail daripada akaun Microsoft OneDrive anda kepada pengguna lain adalah mudah dalam erti kata bahawa anda boleh memuat turun kandungan daripada OneDrive anda, kemudian memuat naiknya secara manual ke akaun lain. Dalam siaran ini, kami akan menunjukkan kepada anda bagaimana untuk pindahkan fail OneDrive kepada pengguna lain melalui PowerShell .



  Cara memindahkan fail OneDrive kepada pengguna lain melalui PowerShell





Perkara yang perlu dipertimbangkan

Apabila ia berkaitan dengan memuat naik fail daripada OneDrive anda ke akaun lain, ini adalah tugas yang akan mengambil sedikit masa kerana tidak mungkin pada masa ini memuat naik fail yang lebih besar daripada 250MB. Berita baiknya ialah PowerShell akan mencatat semua fail yang tidak boleh dimuat naik, jadi anda boleh mencarinya dan berkongsinya melalui kaedah biasa.





Sebelum memuat naik fail ke akaun OneDrive yang lain, fail tersebut akan dimuat turun terlebih dahulu ke komputer anda, jadi pastikan anda mempunyai ruang yang mencukupi pada pemacu keras atau SSD anda sebelum bergerak ke hadapan. Dan kerana sambungan internet anda diperlukan, kelajuan keseluruhan pemindahan akan bergantung pada kualiti rangkaian.



xbox satu gambar latar

Sekarang, kita mesti ambil perhatian bahawa pengesahan dua faktor tidak wujud pada akaun pentadbir, jadi buat akaun pentadbir sementara yang tidak mempunyai 2FA untuk tujuan ini sahaja.

Perkara yang anda perlukan

Kami akan menggunakan skrip khas untuk memindahkan fail dari satu akaun OneDrive ke akaun yang lain. Jadi, agar skrip berfungsi dengan masalah, sila pasang Modul PowerShell berikut sekarang:

Modul SharePoint PnP PowerShell



Buka alat PowerShell sebagai pentadbir, kemudian jalankan arahan berikut:

Install-Module SharePointPnPPowerShellOnline -Force

Shell Pengurusan Dalam Talian SharePoint

Tujuan alat ini adalah untuk mengubah suai kebenaran pada akaun OneDrive pengguna.

Muat turun dan pasang secara percuma daripada microsoft.com .

Modul MSOnline V1 Powershell

tetingkap but semula jarak jauh 10

Untuk memasang Modul akhir ini, sila jalankan arahan berikut dalam PowerShell sebagai pentadbir:

Install-Module MSOnline -Force

Bagaimana untuk memindahkan fail OneDrive ke akaun lain

Untuk memindahkan fail daripada akaun OneDrive anda ke akaun lain, anda perlu membuka PowerShell dan kemudian menjalankan skrip yang disediakan.

Buka PowerShell

  Carian Microsoft PowerShell

Buka Kod Visual Studio, atau PowerShell.

Anda boleh melakukan ini dengan mengklik pada butang Cari, kemudian cari PowerShell.

Dari sana, klik kanan pada apl, kemudian pilih pilihan yang direka untuk membuka alat dalam mod Pentadbiran.

Jalankan skrip

  Skrip OneDrive PowerShell

Seterusnya, anda mesti menjalankan skrip yang berkaitan. Anda boleh menemuinya di bahagian bawah artikel.

Kami memilih untuk melakukan ini kerana skripnya agak panjang.

Selepas menambah skrip, tekan kekunci Enter pada papan kekunci anda.

Pindahkan fail

Akhir sekali, kini tiba masanya untuk memindahkan fail ke akaun OneDrive yang lain.

Anda lihat, sejurus selepas menekan kekunci Enter, anda akan diminta untuk menambah akaun e-mel Nama pengguna pengguna yang akan pergi .

Anda juga akan memerlukan Nama pengguna pengguna destinasi . Ini ialah pengguna OneDrive tempat fail akan disalin dan dipindahkan.

Akhir sekali, anda akan diminta untuk menambah Nama pengguna Office 365 Admin anda .

Tunggu skrip melakukan tugasnya sebelum menyemak akaun penerima untuk melihat sama ada fail telah dipindahkan dengan betul.

Salin dan tampal skrip di bawah:

$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

Anda boleh mencari skrip mengenai ini Halaman reddit .

BACA : Bagaimana untuk mengeksport CSV dalam PowerShell pada Windows

Bolehkah PowerShell mengakses OneDrive?

SharePoint Online PowerShell akan membolehkan pengguna menyambung ke akaun OneDrive lain menggunakan alat PowerShell. Ia akan meminta anda memasukkan kata laluan anda agar PowerShell mula bekerja pada akaun OneDrive anda melalui cmdlet.

menguruskan tambah

Bolehkah OneDrive diakses oleh pengguna luaran?

Akaun OneDrive anda boleh diakses oleh pengguna luaran, tetapi hanya jika anda membenarkannya. Pengguna boleh mempunyai akses kepada fail anda selama-lamanya atau untuk tempoh masa yang ditetapkan. Anda juga boleh mengehadkan apa yang boleh mereka lakukan.

Bagaimana untuk menyalin fail daripada OneDrive orang lain?

Anda mempunyai pilihan berikut jika anda mahu menyalin fail daripada OneDrive orang lain:

  • Buka OneDrive dalam penyemak imbas anda menggunakan pautan, pilih fail yang ingin anda salin dan klik Muat turun. Ini akan memuat turunnya ke komputer anda.
  • Buka akaun OneDrive menggunakan pautan, pilih fail yang ingin anda salin dan klik Salin ke.

Itu sahaja!

  Cara memindahkan fail OneDrive kepada pengguna lain melalui PowerShell
Jawatan Popular