はじめに
Power BI Premium P1などの Premium 容量や無料試用版の容量から Microsoft Fabric 容量への移行など、ある容量から別の容量に移行するには、その容量に割り当てられているワークスペースを移行先の容量に割り当て直す必要があります。ワークスペースが数えるほどしかなければ GUI で実行しても良いのですが、たくさんあると手作業で実行するのはただただ面倒です。
ある容量から別の容量に、ワークスペースを一括で割り当てする PowerShell のサンプルが GitHub 公開されているので、その使い方をご紹介します。
必要な権限について間違いがあったため、訂正しています。(2024/10/16)
使い方
下記の手順6.を実行する前に、対象の Fabric 容量を起動 (再開/resume) しておきます
-
上記 GitHub より .ps1 ファイルをダウンロードします。18行目の関数名に「global:」を付加して保存します。
function global:Move-PowerBICapacityWorkspaces ($fromCapacityName, $toCapacityName)
-
MicrosoftPowerBIMgmt モジュールをインストールします。
(PowerShell を管理者権限で実行する必要があります。)
PS> Install-Module -Name MicrosoftPowerBIMgmt
-
PowerShell で .ps1 ファイルを保存したディレクトリに移動します
PS> cd C:\temp
-
Power BI サービスにサインインします
PS> Connect-PowerBIServiceAccount
-
スクリプトを実行します
PS> .¥Move-PowerBICapacityWorkspaces.ps1
-
関数を実行します
PS> Move-PowerBICapacityWorkspaces -fromCapacityName "移行元容量名" -toCapacityName "移行先容量名"
Power BI 以外の Fabric アイテムを含むワークスペースは、異なるリージョンにある容量へ移行することができません。
移行先の容量は、移行元の容量と同じリージョンに作成する必要があります。
解説
次の PowerShell コマンドを使用して、テナントに紐づく容量の情報を取得しています。
ここで自分が容量管理者または共同作成者になっている容量の一覧と、そのうち移行元の容量に割り当てられているワークスペースの一覧を取得しています。
次の管理用 REST API を使用して、移行先の容量に上記で取得したワークスペースを割り当てています。
以前こちら↓を使っていると書いていましたが、間違いです。
必ずしも Power BI 管理者である必要はありませんが、以下の要件があります。
- The caller must have contributor permissions or be an capacity Admin.
(実行者は容量の共同作成者または容量管理者である必要あり) -
The caller must have admin workspace role.
(実行者にはワークスペースの管理者ロールが必要)
この記事で「Power BI 管理者」というのは、Microsoft 365 管理者ロールの「グローバル管理者」「Power Platform 管理者」「Fabric 管理者」のいずれかの役割 (Role) を割り当てられているユーザーを指します。
Power BI 管理者であれば、自動的にテナントのすべての容量の容量管理者になりますが、ワークスペースのロールとは無関係なので、注意が必要です。
試用版の容量からの移行の場合
その試用版の管理者 (試用版を開始した本人) 以外が移行するには、次のようにスクリプト31行目を修正します(-Scope Organization を付加)。
$allCapacities = Get-PowerBICapacity -Scope Organization
修正したコードを使用する場合には、Power BI 管理者である必要があります。
注意とまとめ
- 試用版の容量は、その試用版を開始した本人以外で存在を把握できるのは Power BI 管理者のみのため、試用版の容量からの移行を実施できるのは試用版を開始した本人か Power BI 管理者のみです。
- 「Fabric 管理者」などの Microsoft 365 管理者ロールの割り当ての反映にはタイムラグがある場合があります。権限付与したのにエラーになる場合は、少し待ってから再実行してみてください。
GUI ([容量の設定]画面) ではワークスペースの管理者ロールがなくても容量への割り当てができますが、このスクリプト (Assign to capacity REST API) を使って移行するにはワークスペースの「管理者」ロールが必要です。移行対象となるワークスペースに管理者ロールの割り当てられていないものがあると処理が中断し、部分的に移行された状態となります。- 容量の切替には数分かかる場合もあります。また、実行中のタスクはすべてキャンセルされるため、取り込みや更新を行っていない時間に実施するか、切り替え後に再実行するなどご対応ください。