Convert-MSOLDomainToStandard実行時1,000 を超えるフェデレーションユーザーが存在する場合のエラー

現象

Convert-MSOLDomainToStandard 実行時、1,000 を超えるフェデレーションユーザーが存在すると、以下のエラーが発生し、一時パスワードが生成されません。

MsolDomainToStandard : A protocol error occurred.
At line:1 char:29
+ Convert-MsolDomainToStandard <<<<  -DomainName <DomainName> -PasswordFile c:\password.txt -SkipUserConversion $false
    + CategoryInfo          : NotSpecified: (:) [Convert-MsolDomainToStandard]
   , DirectoryOperationException
    + FullyQualifiedErrorId : A protocol error occurred.,Microsoft.Online.Identity.Federation.Powershell.ConvertDomainToManaged

原因

フェデレーションユーザーが 1,000 を超える場合に発生します。

回避策

PowerShell スクリプトを使用した、以下の方法で回避できます。

方法 : 

  1. プライマリの AD FS サーバーに管理者でログインします。
  2. [スタート]、[すべてのプログラム]、[Microsoft Azure Active Directory] の順にクリックし、[Windows PowerShell 用Microsoft Azure Active Directory モジュール] を管理者として実行して、Windows PowerShell 用Microsoft Azure Active Directory モジュールを起動します。
  3. 起動した PowerShell で、以下のコマンドを順に実行して、Office 365 に接続します。

    $cred = Get-Credential

    入力を促されたら、SSO が有効化されていない Office 365 管理者資格情報を入力します 。

    Connect-MsolService -cedential $cred

  4. 以下のコマンドを実行して、対象のドメインを Federated から Managed に変換します。 

    Convert-MSOLDomainToStandard -DomainName <FederatedDomainName> -SkipUserConversion $true -PasswordFile c:\userpasswords.txt

  5. 以下のコマンドを実行します。

    Start-Transcript


    以下のような結果が返ってきます。
    -------------------------------------------
    トランスクリプトが開始されました。出力ファイル: C:\Users\xxxx\Documents\PowerShell_transcript.20130603184358.txt
    -------------------------------------------

    このコマンドを実行することで、Federated から Managed へ変更されたユーザーの一時パスワードがファイルに出力されます。
  6. 以下のPowerShell スクリプトの1行目 [Domain Name to Convert] を対象のドメイン名に変更します。

    $Users = Get-MsolUser -All -DomainName [Domain Name to Convert]
    foreach ($User in $Users)
    {
    try {
    $Upn = $User.UserPrincipalName
    $Pw = Convert-MsolFederatedUser -UserPrincipalName $Upn -ErrorAction Stop
    $Upn + "`t" + $pw
    }
    catch {
    try {
    $Pw = Set-MsolUserPassword -UserPrincipalName $Upn -ErrorAction Stop
    $Upn + "`t" + $pw
    }
    catch {
    "--------"
    $Upn + "`r`n" + $_.Exception.GetType().FullName + "`r`n" + $_.Exception.Message
    "--------"
    }
    }
    }
  7. 上記 PowerShell スクリプトを実行します。
  8. 以下のコマンドを実行します。

    Stop-Transcript


    以下のような結果が返ってきます。
    -------------------------------------------
    トランスクリプトが停止されました。出力ファイル: C:\Users\xxxx\Documents\PowerShell_transcript.20130603184358.txt
    -------------------------------------------

    Federated から Managed へ変更されたユーザーの一時パスワードが出力ファイルに保管されます。

プロパティ

文書番号:2888175 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック