Как передать файлы OneDrive другому пользователю через PowerShell

Kak Peredat Fajly Onedrive Drugomu Pol Zovatelu Cerez Powershell



Передача файлов из вашей учетной записи Microsoft OneDrive другому пользователю проста в том смысле, что вы можете загрузить содержимое из своего OneDrive, а затем вручную загрузить его в другую учетную запись. В этом посте мы покажем вам, как передавать файлы OneDrive другому пользователю через PowerShell .



  Как передать файлы OneDrive другому пользователю через PowerShell





Что следует учитывать

Когда дело доходит до загрузки файлов из вашего OneDrive в другую учетную запись, это задача, которая займет некоторое время, потому что в настоящее время невозможно загружать файлы размером более 250 МБ. Хорошей новостью является то, что PowerShell запишет все файлы, которые не может загрузить, чтобы вы могли найти их и поделиться ими обычным способом.





количество високосных лет между двумя датами

Прежде чем загружать файлы в другую учетную запись OneDrive, файлы сначала будут загружены на ваш компьютер, поэтому перед тем, как двигаться дальше, убедитесь, что у вас достаточно места на жестком диске или SSD. А поскольку требуется подключение к Интернету, общая скорость передачи будет зависеть от качества сети.



Теперь мы должны отметить, что двухфакторная аутентификация не существует в учетной записи администратора, поэтому создайте временную учетную запись администратора, не имеющую 2FA, только для этой цели.

Вещи, которые вам понадобятся

Мы будем использовать специальный скрипт для перемещения файлов из одной учетной записи OneDrive в другую. Итак, чтобы скрипт работал с проблемами, пожалуйста, установите следующие модули PowerShell прямо сейчас:

Модуль SharePoint PnP PowerShell



Откройте инструмент PowerShell от имени администратора, затем выполните следующую команду:

Install-Module SharePointPnPPowerShellOnline -Force

Командная консоль SharePoint Online

Цель этого инструмента — изменить разрешения для учетной записи OneDrive пользователя.

Загрузите и установите его бесплатно с microsoft.com .

Модуль MSOnline V1 Powershell

Чтобы установить этот последний модуль, выполните следующую команду в PowerShell от имени администратора:

Install-Module MSOnline -Force

Как перенести файлы OneDrive в другую учетную запись

Чтобы перенести файлы из вашей учетной записи OneDrive в другую, вам нужно открыть PowerShell, а затем запустить предоставленный скрипт.

Служба клиента групповой политики не смогла войти в систему. доступ запрещен

Откройте PowerShell

  Поиск Microsoft PowerShell

Откройте код Visual Studio или PowerShell.

Вы можете сделать это, нажав кнопку «Поиск», а затем найдите PowerShell.

Оттуда щелкните правой кнопкой мыши приложение, затем выберите параметр, предназначенный для открытия инструмента в режиме администратора.

Запустить скрипт

  Скрипт OneDrive PowerShell

Далее необходимо запустить соответствующий скрипт. Вы можете найти его внизу статьи.

Мы решили сделать это, потому что сценарий довольно длинный.

После добавления скрипта нажмите клавишу Enter на клавиатуре.

Перенесите файлы

Наконец, пришло время перенести файлы в другую учетную запись OneDrive.

Видите ли, сразу после нажатия клавиши Enter вам будет предложено добавить учетную запись электронной почты. Имя пользователя уходящего пользователя .

Вам также понадобится Имя пользователя целевого пользователя . Это пользователь OneDrive, которому будут скопированы и переданы файлы.

Наконец, вас попросят добавить Имя пользователя вашего администратора Office 365 .

Подождите, пока скрипт выполнит свою работу, прежде чем проверять принимающую учетную запись, чтобы убедиться, что файлы были переданы правильно.

Скопируйте и вставьте следующий скрипт:

$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 с помощью командлетов.

рассчитать процентное изменение в Excel

Могут ли внешние пользователи получить доступ к OneDrive?

К вашей учетной записи OneDrive могут получить доступ внешние пользователи, но только если вы разрешите это. Пользователи могут иметь доступ к вашим файлам навсегда или на определенный период времени. Вы также можете ограничить то, что они могут сделать.

Как скопировать файлы из OneDrive другого человека?

У вас есть следующие варианты, если вы хотите скопировать файлы из OneDrive другого человека:

  • Откройте OneDrive в браузере по ссылке, выберите файлы, которые хотите скопировать, и нажмите «Загрузить». Это загрузит его на ваш компьютер.
  • Откройте учетную запись OneDrive по ссылке, выберите файлы, которые хотите скопировать, и нажмите «Копировать в».

Вот и все!

  Как передать файлы OneDrive другому пользователю через PowerShell
Популярные посты