كيفية نقل ملفات OneDrive إلى مستخدم آخر عبر PowerShell

Kyfyt Nql Mlfat Onedrive Aly Mstkhdm Akhr Br Powershell



يعد نقل الملفات من حساب Microsoft OneDrive الخاص بك إلى مستخدم آخر أمرًا سهلاً بمعنى أنه يمكنك تنزيل المحتوى من OneDrive الخاص بك ، ثم تحميلها يدويًا إلى الحساب الآخر. في هذا المنشور ، سنوضح لك كيفية القيام بذلك نقل ملفات OneDrive إلى مستخدم آخر عبر PowerShell .



  كيفية نقل ملفات OneDrive إلى مستخدم آخر عبر PowerShell





أشياء للإعتبار

عندما يتعلق الأمر بتحميل الملفات من OneDrive الخاص بك إلى حساب آخر ، فإنها مهمة ستستغرق بعض الوقت لأنه ليس من الممكن في هذا الوقت تحميل ملفات أكبر من 250 ميغا بايت. والخبر السار هو أن PowerShell سوف يقوم بتدوين جميع الملفات التي لا يمكنه تحميلها ، بحيث يمكنك البحث عنها ومشاركتها عبر الطريقة العادية.





قبل تحميل الملفات إلى حساب OneDrive الآخر ، سيتم تنزيل الملفات أولاً على جهاز الكمبيوتر الخاص بك ، لذا تأكد من أن لديك مساحة كافية على محرك الأقراص الثابتة أو SSD قبل المضي قدمًا. ونظرًا لأن اتصالك بالإنترنت مطلوب ، فإن السرعة الإجمالية للنقل ستعتمد على جودة الشبكة.



الآن ، يجب أن نلاحظ أن المصادقة ذات العاملين غير موجودة في حساب المسؤول ، لذلك قم بإنشاء حساب مسؤول مؤقت لا يحتوي على المصادقة الثنائية لهذا الغرض فقط.

الأشياء التي سوف تحتاجها

سنستخدم برنامج نصي خاص لنقل الملفات من حساب OneDrive إلى آخر. لذا ، لكي يعمل البرنامج النصي مع المشكلات ، يرجى تثبيت وحدات PowerShell النمطية التالية الآن:

وحدة SharePoint PnP PowerShell



افتح أداة PowerShell كمسؤول ، ثم قم بتشغيل الأمر التالي:

قم بتسجيل الدخول إلى LinkedIn
Install-Module SharePointPnPPowerShellOnline -Force

SharePoint Online Management Shell

الغرض من هذه الأداة هو تعديل الأذونات على حساب OneDrive الخاص بالمستخدمين.

قم بتنزيله وتثبيته مجانًا من microsoft.com .

وحدة MSOnline V1 Powershell

لتثبيت هذه الوحدة النمطية النهائية ، يرجى تشغيل الأمر التالي في PowerShell كمسؤول:

Install-Module MSOnline -Force

كيفية نقل ملفات OneDrive إلى حساب آخر

لنقل الملفات من حساب OneDrive الخاص بك إلى حساب آخر ، يجب عليك فتح PowerShell ثم تشغيل البرنامج النصي المتوفر.

افتح PowerShell

  بحث Microsoft PowerShell

افتح Visual Studio Code أو PowerShell.

يمكنك القيام بذلك عن طريق النقر فوق الزر 'بحث' ، ثم البحث عن PowerShell.

تغيير لون جوجل كروم

من هناك ، انقر بزر الماوس الأيمن فوق التطبيق ، ثم حدد الخيار المصمم لفتح الأداة في وضع المسؤول.

قم بتشغيل البرنامج النصي

  البرنامج النصي OneDrive PowerShell

بعد ذلك ، يجب عليك تشغيل البرنامج النصي ذي الصلة. يمكنك العثور عليها في الجزء السفلي من المقال.

اخترنا القيام بذلك لأن النص طويل جدًا.

بعد إضافة البرنامج النصي ، اضغط على مفتاح Enter بلوحة المفاتيح.

انقل الملفات

أخيرًا ، حان الوقت الآن لنقل الملفات إلى حساب OneDrive آخر.

كما ترى ، مباشرة بعد الضغط على مفتاح Enter ، سيُطلب منك إضافة حساب البريد الإلكتروني اسم المستخدم المغادر .

سوف تحتاج أيضا اسم المستخدم للمستخدم الوجهة . هذا هو مستخدم OneDrive حيث سيتم نسخ الملفات ونقلها إليه.

أخيرًا ، سيُطلب منك إضافة اسم مستخدم مسؤول Office 365 الخاص بك .

انتظر حتى يقوم البرنامج النصي بعمله قبل التحقق من حساب المستلم لمعرفة ما إذا تم نقل الملفات بشكل صحيح.

أعد تشغيل windows bluetooth 10

انسخ والصق البرنامج النصي أدناه:

$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

يمكنك العثور على البرنامج النصي على هذا صفحة رديت .

يقرأ : كيفية تصدير ملف CSV في PowerShell على Windows

هل يمكن لـ PowerShell الوصول إلى OneDrive؟

سيسمح SharePoint Online PowerShell للمستخدمين بالاتصال بحساب OneDrive آخر باستخدام أداة PowerShell. سيطلب منك إدخال كلمة المرور الخاصة بك حتى يبدأ PowerShell في العمل على حسابات OneDrive الخاصة بك عن طريق أوامر cmdlets.

هل يمكن الوصول إلى OneDrive بواسطة مستخدمين خارجيين؟

يمكن الوصول إلى حساب OneDrive الخاص بك بواسطة مستخدمين خارجيين ، ولكن فقط إذا سمحت بذلك. يمكن للمستخدمين الوصول إلى ملفاتك إلى الأبد أو لفترة زمنية محددة. يمكنك أيضًا تحديد ما يمكنهم فعله.

كيف تنسخ الملفات من OneDrive الخاص بشخص آخر؟

لديك الخيارات التالية إذا كنت تريد نسخ الملفات من OneDrive الخاص بشخص آخر:

  • افتح OneDrive في المستعرض الخاص بك باستخدام الارتباط ، وحدد الملفات التي تريد نسخها وانقر فوق تنزيل. سيؤدي ذلك إلى تنزيله على جهاز الكمبيوتر الخاص بك.
  • افتح حساب OneDrive باستخدام الارتباط ، وحدد الملفات التي تريد نسخها ، وانقر فوق نسخ إلى.

هذا كل شيء!

  كيفية نقل ملفات OneDrive إلى مستخدم آخر عبر PowerShell
المشاركات الشعبية