注: PowerShell 統合には、ShareGate Migrate の Pro または Enterprise サブスクリプションが必要です。Essentials プランでは利用できません。
この記事は、ShareGate Migrate の PowerShell 統合にのみ適用されます。
アプリケーションのみの認証を使用すると、サインインしたユーザーアカウントなしで、PowerShell から SharePoint および Teams の移行を実行できます。ユーザーの資格情報の代わりに、ShareGate Migrate は Azure アプリ登録を使用して認証を行います。
設定の過程で、アプリ登録を作成し、証明書の資格情報をアップロードして、必要な API のアクセス許可を付与します。
その後、Application (client) ID と証明書を使用して、PowerShell から認証を行います。
始める前に
ShareGate Migrate Pro または Enterprise サブスクリプション
アプリ登録の作成と管理者の同意の付与には、Microsoft 365 テナントでの Global Administrator アクセス権が必要です
アプリ登録を設定する
移行元および移行先の各テナントでこの作業を行います。
単一のテナント内でのみ使用するシングルテナントアプリの場合は、各テナントで設定全体を繰り返します。
1つの登録を複数のテナントで再利用するマルチテナントアプリの場合は、ホームテナントで手順を完了させた後、その他の各テナントで管理者の同意を付与します。
手順1: 証明書を生成する
ShareGate は、アプリとして認証するために証明書を使用します。次の PowerShell スクリプトを実行して、ローカルユーザーストアに自己署名証明書を生成し、デスクトップにエクスポートします。
# Generate a self-signed certificate in your local user store
$certName = "AzureAppAuthCert"
$cert = New-SelfSignedCertificate -Subject "CN=$certName" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
# Export the public key (.cer) - upload this to Azure in Step 3
Export-Certificate -Cert $cert -FilePath "$home\Desktop\$certName.cer"
# Export the private key as a .pfx - required if connecting via Option B
$pfxPassword = ConvertTo-SecureString -String "choose-a-strong-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "$home\Desktop\$certName.pfx" -Password $pfxPassword
# Copy this value for use with New-AzureApplication
Write-Host "Thumbprint: $($cert.Thumbprint)"
両方のファイルがデスクトップに保存されます。.cer ファイルは、手順3で Azure にアップロードします。オプション B で接続する予定がある場合は、.pfx ファイルも必要になります。
コンソールに出力されたサムプリントを控えておいてください。「接続」の手順で New-AzureApplication と一緒に使用します。
手順2: Microsoft Entra ID にアプリを登録する
Global Administrator としてMicrosoft Entra 管理センターにサインインします。
Entra ID > App registrations > New registration に移動します。
アプリに名前を付けます(例: ShareGate Migration)。
Supported account types で、シングルテナントアプリの場合は My organization only を、複数のテナントで使用するマルチテナントアプリの場合は Multiple Entra ID tenants を選択します。
Redirect URI は空のままにします。
Register をクリックします。
Overview ページで Application (client) ID をコピーします。これは
New-AzureApplicationで使用します。
手順3: 証明書をアップロードする
アプリ登録内で、Certificates & secrets > Certificates に移動し、Upload certificate を選択します。
デスクトップから
.cerファイルをアップロードします。Add をクリックします。
手順4: API のアクセス許可を追加する
アプリ登録内で、API permissions > Add a permission に移動します。
以下に記載された各 Application permission を追加します。Microsoft Graph のアクセス許可と SharePoint のアクセス許可は、それぞれ別のエントリとして追加してください。Delegated permissions は選択しないでください。
Grant admin consent for [your tenant] をクリックして確定します。
Microsoft Graph permissions:
| Teams チャンネルのメンバーシップ |
| Teams チャンネルの設定 |
| ディレクトリオブジェクト |
| すべてのサイトコレクション内のファイル |
| Microsoft 365 グループ |
| 情報保護ポリシー |
| Sensitivity Labels |
| OneNote ノートブック |
| すべてのサイトコレクションの完全な制御 |
| すべてのサイトコレクション内の項目の作成、編集、削除 |
| すべてのサイトコレクション内の項目の読み取りと書き込み |
| Planner のタスク |
| チームの作成 |
| チームのメンバーシップ |
| Teams アプリのインストール |
| チームの設定 |
| Teams チャンネル内のタブ |
| 用語ストア |
| ユーザープロファイル |
SharePoint permissions:
注: SharePoint のアクセス許可は、API の一覧の Microsoft Graph ではなく SharePoint の下にあります。
| すべてのサイトコレクションの完全な制御 |
| すべてのサイトコレクション内の項目の作成、編集、削除 |
| すべてのサイトコレクション内の項目の読み取り |
| すべてのサイトコレクション内の項目の読み取りと書き込み |
| 用語ストア(読み取り) |
| 用語ストア(読み取り/書き込み) |
| ユーザープロファイル(読み取り) |
| ユーザープロファイル(読み取り/書き込み) |
ShareGate から接続する
New-AzureApplication で資格情報オブジェクトを作成し、それを Connect-Site または Connect-Tenant に渡します。
オプション A: 証明書のサムプリント(生成スクリプトから取得)
手順1のスクリプトを使用した場合、証明書は Cert:\CurrentUser\My にあります。サムプリントを直接渡します。
# Build a credential object from the certificate thumbprint
$app = New-AzureApplication -ClientId "<application-client-id>" -Thumbprint "<certificate-thumbprint>"
# Connect to a specific site
Connect-Site -Url "https://contoso.sharepoint.com/sites/Marketing" -AzureApplication $app
# Or connect at the tenant level
Connect-Tenant -Domain "contoso" -AzureApplication $app
オプション B: .pfx ファイルからの証明書
証明書が .pfx ファイルとして存在する場合は、それを直接読み込みます。
# Load the certificate from a .pfx file
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new(
"C:\certs\sharegate-app.pfx",
"your-pfx-password")
# Build a credential object
$app = New-AzureApplication -ClientId "<application-client-id>" -Certificate $certificate
# Connect to a site
Connect-Site -Url "https://contoso.sharepoint.com/sites/Marketing" -AzureApplication $app
1つのアプリオブジェクトで、同じセッション内の複数の接続を認証できます。複数の Connect-Site または Connect-Tenant の呼び出しで、同じ $app 変数を再利用してください。
注: セキュリティポリシーにより必要なアクセス許可の1つを付与できない場合は、Connect-Site または Connect-Tenant に -AllowMissingPermissions を追加すると、そのまま接続できます。
不足しているアクセス許可に依存する操作は、Forbidden エラーで失敗します。
このスイッチは、認証が成功した後のアクセス許可チェックを緩和するだけです。サインインの失敗を解決するものではありません。
アプリを保存して再利用する
アプリ登録オブジェクトを保存しておくと、後のセッションで取得できるため、毎回作り直す必要がなくなります。保存するには Save-AzureApplication、読み込むには Get-AzureApplication を使用します。
既知の制限事項
Modified By と Created By は移行時に引き継がれません。項目には、元の作成者ではなく、アプリのサービス ID が表示されます。
ユーザーアラートはスキップされます。アプリのみの認証にはアラートを送信するためのユーザーコンテキストがありません。
クラシック Web パーツは移行されません。
クラシック SharePoint ワークフローは移行されません。
InfoPath フォームは部分的にのみ移行されます。警告が表示されることが予想されます。
発行の承認ワークフローにはユーザーコンテキストが必要です。エラーまたは警告が表示されることが予想されます。
Sensitivity Label は、移行時にはまだ適用されません。今後のアップデートでの対応が予定されています。
この記事はAIによって翻訳されています。ご不明な点がある場合は、英語の原文をご確認ください。
