Jak przenieść pliki OneDrive do innego użytkownika za pomocą PowerShell

Jak Przeniesc Pliki Onedrive Do Innego Uzytkownika Za Pomoca Powershell



Przesyłanie plików z konta Microsoft OneDrive do innego użytkownika jest łatwe w tym sensie, że możesz pobrać zawartość z OneDrive, a następnie ręcznie przesłać je na inne konto. W tym poście pokażemy, jak to zrobić przenieść pliki OneDrive do innego użytkownika za pomocą PowerShell .



  Jak przenieść pliki OneDrive do innego użytkownika za pomocą PowerShell





Rzeczy do rozważenia

Jeśli chodzi o przesyłanie plików z OneDrive na inne konto, jest to zadanie, które zajmie trochę czasu, ponieważ w tej chwili nie jest możliwe przesyłanie plików większych niż 250 MB. Dobrą wiadomością jest to, że PowerShell zanotuje wszystkie pliki, których nie może przesłać, więc możesz je wyszukać i udostępnić za pomocą zwykłej metody.





Przed przesłaniem plików na inne konto OneDrive pliki zostaną najpierw pobrane na Twój komputer, więc zanim przejdziesz dalej, upewnij się, że masz wystarczająco dużo miejsca na dysku twardym lub dysku SSD. A ponieważ wymagane jest połączenie internetowe, ogólna prędkość transferu będzie zależała od jakości sieci.



Teraz musimy zauważyć, że uwierzytelnianie dwuskładnikowe nie istnieje na koncie administratora, więc utwórz tymczasowe konto administratora, które nie ma 2FA tylko do tego celu.

Rzeczy, których będziesz potrzebować

Użyjemy specjalnego skryptu, aby przenieść pliki z jednego konta OneDrive na drugie. Aby skrypt działał z problemami, zainstaluj teraz następujące moduły PowerShell:

pobierz skydrive dla systemu Windows

Moduł programu SharePoint PnP PowerShell



Otwórz narzędzie PowerShell jako administrator, a następnie uruchom następujące polecenie:

Install-Module SharePointPnPPowerShellOnline -Force

Powłoka zarządzania SharePoint Online

Celem tego narzędzia jest modyfikacja uprawnień na koncie OneDrive użytkowników.

Pobierz i zainstaluj bezpłatnie z microsoft.com .

Moduł MSOnline V1 Powershell

Aby zainstalować ostatni moduł, uruchom następujące polecenie w PowerShell jako administrator:

Install-Module MSOnline -Force

Jak przenieść pliki OneDrive na inne konto

Aby przenieść pliki z konta OneDrive na inne, musisz otworzyć PowerShell, a następnie uruchomić dostarczony skrypt.

Otwórz PowerShell

  Wyszukiwanie Microsoft PowerShell

Otwórz Visual Studio Code lub PowerShell.

Możesz to zrobić, klikając przycisk Szukaj, a następnie wyszukaj PowerShell.

Stamtąd kliknij prawym przyciskiem myszy aplikację, a następnie wybierz opcję przeznaczoną do otwierania narzędzia w trybie administratora.

Uruchom skrypt

  Skrypt OneDrive PowerShell

Następnie musisz uruchomić odpowiedni skrypt. Znajdziesz go na dole artykułu.

Zdecydowaliśmy się na to, ponieważ scenariusz jest dość długi.

Po dodaniu skryptu naciśnij klawisz Enter na klawiaturze.

Przenieś pliki

Wreszcie nadszedł czas, aby przenieść pliki na inne konto OneDrive.

Widzisz, zaraz po naciśnięciu klawisza Enter zostaniesz poproszony o dodanie konta e-mail Nazwa użytkownika odchodzącego użytkownika .

Będziesz także potrzebować Nazwa użytkownika użytkownika docelowego . Jest to użytkownik usługi OneDrive, do którego pliki zostaną skopiowane i przesłane.

Na koniec zostaniesz poproszony o dodanie Nazwa użytkownika administratora usługi Office 365 .

Poczekaj, aż skrypt wykona swoje zadanie, zanim sprawdzisz konto odbiorcze, aby zobaczyć, czy pliki zostały przesłane poprawnie.

Skopiuj i wklej poniższy skrypt:

$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

Możesz znaleźć skrypt na ten temat strona Reddita .

CZYTAĆ : Jak wyeksportować plik CSV w PowerShell w systemie Windows

Czy PowerShell może uzyskać dostęp do OneDrive?

SharePoint Online PowerShell umożliwi użytkownikom łączenie się z innym kontem OneDrive za pomocą narzędzia PowerShell. Poprosi Cię o wpisanie hasła, aby PowerShell mógł rozpocząć pracę na Twoich kontach OneDrive za pomocą poleceń cmdlet.

cube root excel

Czy użytkownicy zewnętrzni mogą uzyskiwać dostęp do usługi OneDrive?

Użytkownicy zewnętrzni mogą uzyskiwać dostęp do Twojego konta OneDrive, ale tylko wtedy, gdy na to zezwolisz. Użytkownicy mogą mieć dostęp do Twoich plików na zawsze lub na określony czas. Możesz także ograniczyć ich możliwości.

Jak skopiować pliki z OneDrive innej osoby?

Masz następujące opcje, jeśli chcesz skopiować pliki z usługi OneDrive innej osoby:

  • Otwórz OneDrive w przeglądarce za pomocą linku, wybierz pliki, które chcesz skopiować i kliknij Pobierz. Spowoduje to pobranie go na komputer.
  • Otwórz konto OneDrive za pomocą łącza, wybierz pliki, które chcesz skopiować, i kliknij Kopiuj do.

Otóż ​​to!

  Jak przenieść pliki OneDrive do innego użytkownika za pomocą PowerShell
Popularne Wiadomości