組織内のユーザーのために OneDrive を事前プロビジョニングする

既定では、ユーザーが初めて OneDrive を参照すると、自動的に作成 (プロビジョニング) されます。 以下のような場合には、ユーザーの OneDrive の場所を事前に準備する、つまり、事前プロビジョニングすることもできます。

  • 新しい従業員を追加するカスタム プロセスが組織にあり、新しい従業員を追加するときに OneDrive を作成したい場合。

  • organizationは、オンプレミスの SharePoint Server から Microsoft 365 に移行する予定です。

  • 組織が別のオンライン ストレージ サービスからの移行を計画している場合。

この記事では、PowerShell を使用してユーザー向けの OneDrive を事前プロビジョニングする方法を説明します。

Important

事前プロビジョニングしているユーザー アカウントはサインインを許可する必要があり、SharePoint ライセンスも割り当てられている必要があります。 このコマンドレットを使用して OneDrive をプロビジョニングするには、グローバル管理者または SharePoint 管理者であり、SharePoint ライセンスを割り当てる必要があります。

注:

多数のユーザーに対して OneDrive を事前プロビジョニングする場合、OneDrive の場所が作成されるまでに数日かかる場合があります。

ユーザー向けの OneDrive の事前プロビジョニング

  1. 多数のユーザーに OneDrive を事前プロビジョニングしている場合は、これらのユーザーのリストを作成してファイルとして保存します。 たとえば、次を含む、Users.txt という名前のテキスト ファイルを作成します。

    user1@contoso.com
    user2@contoso.com
    user3@contoso.com
    
  2. 最新の SharePoint Online 管理シェルをダウンロードします

    注:

    SharePoint Online 管理シェルの以前のバージョンがインストールされている場合は、[プログラムの追加と削除] に移動して、"SharePoint Online 管理シェル" をアンインストールします。

  3. Microsoft 365 のグローバル管理者または SharePoint 管理者として SharePoint Online に接続します。 方法の詳細については、「SharePoint Online 管理シェルの使用を開始する」を参照してください。

    注:

    PowerShell コマンド Request-SPOPersonalSite は、サインインが許可されているユーザーに対してのみ機能します。 ユーザーのサインインをブロックした場合は、手順 1 で作成したテキスト ファイルを使用して PowerShell コマンド Update-MgUser を 実行して、ユーザーのサインインを許可できます。

    Get-Content -path "C:\Users.txt" | ForEach-Object { Update-MgUser -UserPrincipalName $_ -BlockCredential $False }
    
  4. PowerShell コマンド Request-SPOPersonalSite を実行し、手順 1 で以前作成したテキスト ファイルを使用します。

    $users = Get-Content -path "C:\Users.txt"
    Request-SPOPersonalSite -UserEmails $users
    

OneDrive がユーザー用に作成されたことを確認するには、「組織内のすべてのユーザーの OneDrive URL のリストを取得する」を参照してください。

organization内のすべてのライセンスユーザーに対して OneDrive を事前プロビジョニングする

次のコード スニペットでは、199 のバッチで OneDrive が事前にプロビジョニングされます。

$Credential = Get-Credential
Connect-MgGraph -Credential $Credential
Connect-SPOService -Credential $Credential -Url https://contoso-admin.sharepoint.com

$list = @()
#Counters
$i = 0
$j = 0

#Get licensed users
$users = Get-MgUser -All | Where-Object { $_.islicensed -eq $true }
#total licensed users
$count = $users.count

foreach ($u in $users) {
    $i++
    $j++
    Write-Host "$j/$count"

    $upn = $u.userprincipalname
    $list += $upn

    if ($i -eq 199) {
        #We reached the limit
        Write-Host "Batch limit reached, requesting provision for the current batch"
        Request-SPOPersonalSite -UserEmails $list -NoWait
        Start-Sleep -Milliseconds 655
        $list = @()
        $i = 0
    }
}

if ($i -gt 0) {
    Request-SPOPersonalSite -UserEmails $list -NoWait
}
Write-Host "Completed OneDrive Provisioning for $j users"

ハイブリッド OneDrive の計画