PowerShell을 통해 OneDrive 파일을 다른 사용자에게 전송하는 방법

PowerShell을 통해 OneDrive 파일을 다른 사용자에게 전송하는 방법

Microsoft OneDrive 계정에서 다른 사용자에게 파일을 전송하는 것은 OneDrive에서 콘텐츠를 다운로드한 다음 다른 계정에 수동으로 업로드할 수 있다는 점에서 쉽습니다. 이 게시물에서는 PowerShell을 통해 OneDrive 파일을 다른 사용자에게 전송하는 방법을 보여줍니다 .

고려해야 할 사항

OneDrive에서 다른 계정으로 파일을 업로드하는 경우 현재 250MB보다 큰 파일을 업로드할 수 없기 때문에 시간이 좀 걸리는 작업입니다. 좋은 소식은 PowerShell이 ​​업로드할 수 없는 모든 파일을 기록하므로 일반 방법을 통해 파일을 찾고 공유할 수 있다는 것입니다.

다른 OneDrive 계정에 파일을 업로드하기 전에 파일이 먼저 컴퓨터에 다운로드되므로 계속 진행하기 전에 하드 드라이브 또는 SSD에 충분한 공간이 있는지 확인하십시오. 그리고 인터넷 연결이 필요하기 때문에 전체 전송 속도는 네트워크 품질에 따라 달라집니다.

이제 관리자 계정에는 2단계 인증이 존재하지 않으므로 이 목적만을 위한 2FA가 없는 임시 관리자 계정을 생성해야 합니다.

필요한 것들

특수 스크립트를 사용하여 한 OneDrive 계정에서 다른 계정으로 파일을 이동합니다. 따라서 스크립트가 문제를 해결하려면 지금 바로 다음 PowerShell 모듈을 설치하십시오.

SharePoint PnP PowerShell 모듈

PowerShell 도구를 관리자로 연 후 다음 명령을 실행합니다.

Install-Module SharePointPnPPowerShellOnline -Force

SharePoint 온라인 관리 셸

이 도구의 목적은 사용자의 OneDrive 계정에 대한 권한을 수정하는 것입니다.

microsoft.com 에서 무료로 다운로드하여 설치하십시오 .

MSOnline V1 Powershell 모듈

이 최종 모듈을 설치하려면 PowerShell에서 관리자로 다음 명령을 실행하십시오.

Install-Module MSOnline -Force

OneDrive 파일을 다른 계정으로 전송하는 방법

OneDrive 계정에서 다른 계정으로 파일을 전송하려면 PowerShell을 연 다음 제공된 스크립트를 실행해야 합니다.

PowerShell 열기

마이크로소프트 파워셸 검색

Visual Studio Code 또는 PowerShell을 엽니다.

검색 버튼을 클릭한 다음 PowerShell을 검색하면 됩니다.

여기에서 앱을 마우스 오른쪽 버튼으로 클릭한 다음 관리 모드에서 도구를 열도록 설계된 옵션을 선택합니다.

스크립트 실행

OneDrive PowerShell 스크립트

다음으로 관련 스크립트를 실행해야 합니다. 기사 하단에서 찾을 수 있습니다.

스크립트가 상당히 길기 때문에 이렇게 하기로 했습니다.

스크립트를 추가한 후 키보드에서 Enter 키를 누릅니다.

파일 전송

마지막으로 파일을 다른 OneDrive 계정으로 전송할 차례입니다.

Enter 키를 누르면 바로 이메일 계정을 추가하라는 메시지가 표시됩니다. 떠나는 사용자의 사용자 이름 .

대상 사용자의 사용자 이름 도 필요합니다 . 파일이 복사되고 전송될 OneDrive 사용자입니다.

마지막으로 The username of your Office 365 Admin 을 추가하라는 메시지가 표시됩니다 .

파일이 올바르게 전송되었는지 확인하기 위해 수신 계정을 확인하기 전에 스크립트가 작업을 수행할 때까지 기다리십시오.

아래 스크립트를 복사하여 붙여넣으십시오.

$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

이 Reddit 페이지 에서 스크립트를 찾을 수 있습니다 .

PowerShell이 ​​OneDrive에 액세스할 수 있나요?

SharePoint Online PowerShell은 사용자가 PowerShell 도구를 사용하여 다른 OneDrive 계정에 연결할 수 있도록 합니다. PowerShell이 ​​cmdlet을 통해 OneDrive 계정에서 작업을 시작하려면 암호를 입력하라는 메시지가 표시됩니다.

외부 사용자가 OneDrive에 액세스할 수 있습니까?

OneDrive 계정은 허용한 경우에만 외부 사용자가 액세스할 수 있습니다. 사용자는 영구적으로 또는 정해진 기간 동안 파일에 액세스할 수 있습니다. 그들이 할 수 있는 일을 제한할 수도 있습니다.

다른 사람의 OneDrive에서 파일을 복사하는 방법은 무엇입니까?

다른 사람의 OneDrive에서 파일을 복사하려는 경우 다음 옵션이 있습니다.

  • 링크를 사용하여 브라우저에서 OneDrive를 열고 복사할 파일을 선택한 다음 다운로드를 클릭합니다. 이렇게 하면 컴퓨터에 다운로드됩니다.
  • 링크를 사용하여 OneDrive 계정을 열고 복사할 파일을 선택한 다음 복사 대상을 클릭합니다.

그게 다야!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다