Cách chuyển tệp OneDrive cho người dùng khác qua PowerShell

Cach Chuyen Tep Onedrive Cho Nguoi Dung Khac Qua Powershell



Việc chuyển tệp từ tài khoản Microsoft OneDrive của bạn sang người dùng khác thật dễ dàng theo nghĩa là bạn có thể tải xuống nội dung từ OneDrive của mình, sau đó tải chúng lên tài khoản kia theo cách thủ công. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách chuyển tệp OneDrive cho người dùng khác qua PowerShell .



  Cách chuyển tệp OneDrive cho người dùng khác qua PowerShell





Những điều cần cân nhắc

Khi tải lên các tệp từ OneDrive của bạn sang một tài khoản khác, đây là một nhiệm vụ sẽ mất một chút thời gian vì hiện tại không thể tải lên các tệp lớn hơn 250 MB. Tin vui là PowerShell sẽ ghi chú tất cả các tệp mà nó không thể tải lên, vì vậy bạn có thể tìm kiếm chúng và chia sẻ chúng qua phương pháp thông thường.





Trước khi tải các tệp lên tài khoản OneDrive khác, trước tiên các tệp sẽ được tải xuống máy tính của bạn, vì vậy hãy đảm bảo bạn có đủ dung lượng trên ổ cứng hoặc SSD trước khi tiếp tục. Và vì kết nối internet của bạn là bắt buộc nên tốc độ truyền tổng thể sẽ phụ thuộc vào chất lượng của mạng.



Bây giờ, chúng tôi phải lưu ý rằng xác thực hai yếu tố không tồn tại trên tài khoản quản trị viên, vì vậy hãy tạo một tài khoản quản trị viên tạm thời không có 2FA chỉ cho mục đích này.

Những thứ bạn sẽ cần

Chúng tôi sẽ sử dụng một tập lệnh đặc biệt để di chuyển các tệp từ tài khoản OneDrive này sang tài khoản OneDrive khác. Vì vậy, để tập lệnh hoạt động có vấn đề, vui lòng cài đặt các Mô-đun PowerShell sau ngay bây giờ:

Mô-đun PowerShell SharePoint PnP



Mở công cụ PowerShell với tư cách quản trị viên, sau đó chạy lệnh sau:

một dịch vụ ubisoft hiện không khả dụng
Install-Module SharePointPnPPowerShellOnline -Force

Vỏ quản lý trực tuyến SharePoint

Mục đích của công cụ này là sửa đổi các quyền trên tài khoản OneDrive của người dùng.

Tải xuống và cài đặt miễn phí từ microsoft.com .

Mô-đun Powershell MSOnline V1

Để cài đặt Mô-đun cuối cùng này, vui lòng chạy lệnh sau trong PowerShell với tư cách quản trị viên:

ứng dụng toán học snap
Install-Module MSOnline -Force

Cách chuyển tệp OneDrive sang tài khoản khác

Để chuyển tệp từ tài khoản OneDrive của bạn sang tài khoản khác, bạn phải mở PowerShell rồi chạy tập lệnh được cung cấp.

Mở PowerShell

  Tìm kiếm Microsoft PowerShell

Mở Visual Studio Code hoặc PowerShell.

Bạn có thể thực hiện việc này bằng cách nhấp vào nút Tìm kiếm, sau đó tìm kiếm PowerShell.

Từ đó, nhấp chuột phải vào ứng dụng, sau đó chọn tùy chọn được thiết kế để mở công cụ ở chế độ Quản trị viên.

Chạy tập lệnh

  Tập lệnh OneDrive PowerShell

Tiếp theo, bạn phải chạy tập lệnh có liên quan. Bạn có thể tìm thấy nó ở dưới cùng của bài viết.

Chúng tôi chọn làm điều này vì kịch bản khá dài.

Sau khi thêm tập lệnh, hãy nhấn phím Enter trên bàn phím của bạn.

ứng dụng thời tiết windows 10 sẽ không mở

Chuyển các tập tin

Cuối cùng, đã đến lúc chuyển các tệp sang một tài khoản OneDrive khác.

Bạn thấy đấy, ngay sau khi nhấn phím Enter, bạn sẽ được yêu cầu thêm tài khoản email Tên người dùng của người dùng rời đi .

Bạn cũng sẽ cần Tên người dùng của người dùng đích . Đây là người dùng OneDrive nơi các tệp sẽ được sao chép và chuyển đến.

hình thu nhỏ onedrive không hiển thị

Cuối cùng, bạn sẽ được yêu cầu thêm Tên người dùng của Quản trị viên Office 365 của bạn .

Đợi tập lệnh thực hiện công việc của nó trước khi kiểm tra tài khoản nhận để xem các tệp có được chuyển chính xác hay không.

Sao chép và dán tập lệnh bên dưới:

$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

Bạn có thể tìm thấy kịch bản này trang Reddit .

ĐỌC : Cách xuất CSV trong PowerShell trên Windows

PowerShell có thể truy cập OneDrive không?

SharePoint Online PowerShell sẽ giúp người dùng có thể kết nối với một tài khoản OneDrive khác bằng công cụ PowerShell. Nó sẽ yêu cầu bạn nhập mật khẩu của mình để PowerShell bắt đầu làm việc trên các tài khoản OneDrive của bạn bằng các lệnh ghép ngắn.

Người dùng bên ngoài có thể truy cập OneDrive không?

Người dùng bên ngoài có thể truy cập tài khoản OneDrive của bạn nhưng chỉ khi bạn cho phép. Người dùng có thể có quyền truy cập vĩnh viễn vào tệp của bạn hoặc trong một khoảng thời gian đã đặt. Bạn cũng có thể giới hạn những gì họ có thể làm.

Làm cách nào để sao chép tệp từ OneDrive của người khác?

Bạn có các tùy chọn sau nếu muốn sao chép tệp từ OneDrive của người khác:

  • Mở OneDrive trong trình duyệt của bạn bằng liên kết, chọn các tệp bạn muốn sao chép và nhấp vào Tải xuống. Thao tác này sẽ tải xuống máy tính của bạn.
  • Mở tài khoản OneDrive bằng liên kết, chọn các tệp bạn muốn sao chép, rồi bấm vào Sao chép vào.

Đó là nó!

  Cách chuyển tệp OneDrive cho người dùng khác qua PowerShell
Bài ViếT Phổ BiếN