組織内のユーザーのために OneDrive を事前プロビジョニングする
既定では、ユーザーが初めて OneDrive を参照すると、自動的に作成 (プロビジョニング) されます。 以下のような場合には、ユーザーの OneDrive の場所を事前に準備する、つまり、事前プロビジョニングすることもできます。
新しい従業員を追加するカスタム プロセスが組織にあり、新しい従業員を追加するときに OneDrive を作成したい場合。
組織は、オンプレミスの SharePoint Server から Microsoft 365 に移行する予定です。
組織が別のオンライン ストレージ サービスからの移行を計画している場合。
この記事では、PowerShell を使用してユーザー向けの OneDrive を事前プロビジョニングする方法を説明します。
既定の記憶領域サイズを設定する方法については、「OneDrive ユーザー向けに既定の記憶領域を設定する」を参照してください
各プランで取得するストレージの詳細については、「 OneDrive サービスの説明」を参照してください。
重要
事前プロビジョニングしているユーザー アカウントはサインインを許可する必要があり、SharePoint ライセンスも割り当てられている必要があります。 このコマンドレットを使用して OneDrive をプロビジョニングするには、SharePoint 管理者であり、SharePoint ライセンスを割り当てる必要があります。
注:
多数のユーザーに対して OneDrive を事前プロビジョニングする場合、OneDrive の場所が作成されるまでに数日かかる場合があります。
ユーザー向けの OneDrive の事前プロビジョニング
多数のユーザーに OneDrive を事前プロビジョニングしている場合は、これらのユーザーのリストを作成してファイルとして保存します。 たとえば、次を含む、Users.txt という名前のテキスト ファイルを作成します。
user1@contoso.com user2@contoso.com user3@contoso.com
最新の SharePoint Online 管理シェルをダウンロードします。
注:
SharePoint Online 管理シェルの以前のバージョンがインストールされている場合は、[プログラムの追加と削除] に移動して、"SharePoint Online 管理シェル" をアンインストールします。
Microsoft 365 で SharePoint 管理者として SharePoint に接続します。 方法の詳細については、「SharePoint Online 管理シェルの使用を開始する」を参照してください。
注:
PowerShell コマンド Request-SPOPersonalSite は、サインインが許可されているユーザーに対してのみ機能します。 ユーザーのサインインをブロックした場合は、手順 1 で作成したテキスト ファイルを使用して PowerShell コマンド Update-MgUser を 実行して、ユーザーのサインインを許可できます。
Get-Content -path "C:\Users.txt" | ForEach-Object { Update-MgUser -UserPrincipalName $_ -BlockCredential $False }
PowerShell コマンド Request-SPOPersonalSite を実行し、手順 1 で以前作成したテキスト ファイルを使用します。
$users = Get-Content -path "C:\Users.txt" Request-SPOPersonalSite -UserEmails $users
OneDrive がユーザー用に作成されたことを確認するには、「組織内のすべてのユーザーの OneDrive URL のリストを取得する」を参照してください。
組織内のすべてのライセンスユーザーに対して 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"