PowerShell スクリプトを使用した API 駆動型インバウンド プロビジョニング

このチュートリアルでは、PowerShell スクリプトを使用して Microsoft Entra ID の API 駆動型インバウンド プロビジョニングを実装する方法について説明します。 このチュートリアルの手順を使用して、人事データを含む CSV ファイルを一括要求ペイロードに変換して、Microsoft Entra のプロビジョニング /bulkUpload API エンドポイントに送信できます。 この記事では、同じ統合パターンがレコードの任意のシステムでどのように使用できるかに関するガイダンスも提供します。

統合シナリオ

業務要件

お客様のレコードのシステムでは、ワーカー データを含む CSV ファイルのエクスポートが定期的に生成されます。 CSV ファイルからデータを読み取り、ターゲット ディレクトリにユーザー アカウントを自動的にプロビジョニングする統合を実装する必要があります (ハイブリッド ユーザーの場合はオンプレミスの Active Directory、クラウド専用ユーザーの場合は Microsoft Entra ID)。

実装要件

実装の観点から:

  • 自動 PowerShell スクリプトを使用して、CSV ファイル エクスポートからデータを読み取り、インバウンド プロビジョニング API エンドポイントに送信する必要があります。
  • PowerShell スクリプトでは、レコードのシステムとターゲット ディレクトリの間で ID データを比較する複雑なロジックを実装したくはありません。
  • Microsoft Entra プロビジョニング サービスを使用して、IT マネージド プロビジョニング ルールを適用して、ターゲット ディレクトリ (オンプレミスの Active Directory または Microsoft Entra ID) でアカウントを自動的に作成、更新、有効化、無効化する必要があります。

Graphic of PowerShell-based integration.

統合シナリオのバリエーション

このチュートリアルでは CSV ファイルをレコードのシステムとして使用しますが、サンプル PowerShell スクリプトをカスタマイズして、レコードの任意のシステムからデータを読み取ることができます。 PowerShell スクリプトを使用して API 駆動型インバウンド プロビジョニングを実装できるエンタープライズ統合シナリオのバリエーションの一覧を次に示します。

# レコードのシステム PowerShell を使用したソース データの読み取りに関する統合ガイダンス
1 [データベース テーブル] Azure SQL データベースまたはオンプレミスの SQL Server を使用している場合は、Read-SqlTableData コマンドレットを使用して、SQL データベースのテーブルに保存されているデータを読み取ることができます。 Invoke-SqlCmd コマンドレットを使用して、Transact-SQL または XQuery スクリプトを実行できます。
Oracle/MySQL/Postgres データベースを使用している場合は、ベンダーによって公開されているか、PowerShell ギャラリーで入手可能な PowerShell モジュールを見つけることができます。 モジュールを使用して、データベース テーブルからデータを読み取ります。
2 LDAP サーバー System.DirectoryServices.Protocols .NET API または PowerShell ギャラリーで入手可能な LDAP モジュールのいずれかを使用して、LDAP サーバーに対してクエリを実行します。 LDAP サーバーからユーザー データを取得するための LDAP スキーマと階層について理解します。
3 REST API を公開するすべてのシステム PowerShell を使用して REST API エンドポイントからデータを読み取る場合は、Microsoft.PowerShell.Utility モジュールから Invoke-RestMethod コマンドレットを使用できます。 REST API のドキュメントを確認し、これが想定しているパラメーターとヘッダー、返す形式、および使用する認証方法を確認します。 その後、それに応じて Invoke-RestMethod コマンドを調整できます。
4 SOAP API を公開する任意のシステム PowerShell を使用して SOAP API エンドポイントからデータを読み取る場合は、Microsoft.PowerShell.Management モジュールから New-WebServiceProxy コマンドレットを使用できます。 SOAP API のドキュメントを確認し、これが想定しているパラメーターとヘッダー、返す形式、および使用する認証方法を確認します。 その後、それに応じて New-WebServiceProxy コマンドを調整できます。

ソース データを読み取った後、前処理ルールを適用し、レコードのシステムからの出力をMicrosoft Entra をプロビジョニングする bulkUpload API エンドポイントに送信できる一括要求に変換します。

重要

自分の PowerShell 統合スクリプトをコミュニティと共有したい場合は、それを PowerShell ギャラリーで公開し、Microsoft がそれへの参照を追加できるように GitHub リポジトリ entra-id-inbound-provisioning 上で Microsoft に通知してください。

このチュートリアルの使用方法

Microsoft Entra インバウンド プロビジョニング GitHub リポジトリで公開されている PowerShell サンプル スクリプトは、いくつかのタスクを自動化します。 これには、大きな CSV ファイルを処理し、一括要求をチャンクして要求ごとに 50 個のレコードを送信するためのロジックがあります。 これをテストし、自分の統合要件に従ってカスタマイズする方法を次に示します。

注意

実装の参照のため、サンプルの PowerShell スクリプトはそのままの状態で提供されています。 スクリプトに関する質問があるか、スクリプトを拡張する場合は、「GitHub プロジェクト リポジトリ」を使用してください。

# 自動化タスク 実装ガイダンス 高度なカスタマイズ
1 CSV ファイルからワーカー データを読み取る。 PowerShell スクリプトをダウンロードします。 任意の CSV ファイルからデータを読み取るためにすぐに使用できるロジックが含まれています。 このスクリプトのさまざまな実行モードの詳細については、「CSV2SCIM PowerShell の使用の詳細」をご覧ください。 レコードのシステムが異なる場合は、「統合シナリオのバリエーション」セクションで提供されている、PowerShell スクリプトをカスタマイズする方法に関するガイダンスを確認してください。
2 データを前処理して SCIM 形式に変換する。 既定では、PowerShell スクリプトは CSV ファイル内の各レコードを SCIM コア ユーザーとエンタープライズ ユーザー表現に変換します。 このプロセスの詳細を把握するには、「標準スキーマを使用して一括要求ペイロードを生成する」のセクションの手順に従います。 CSV ファイルに異なるフィールドがある場合、AttributeMapping.psd ファイルを調整して有効な SCIM ユーザーを生成します。 カスタム SCIM スキーマを使用して一括要求を生成することもできます。 PowerShell スクリプトを更新して、任意のカスタムの CSV データの入力規則ロジックを含めます。
3 Microsoft Entra ID への認証に証明書を使用する。 インバウンド プロビジョニング API にアクセスできるサービス プリンシパルを作成します。 認証にクライアント証明書を使用する方法の詳細については、「サービス プリンシパル認証用にクライアント証明書を構成する」のセクションの手順をご覧ください。 認証にサービス プリンシパルではなくマネージド ID を使用する場合、サンプル スクリプトで Connect-MgGraph の使用を確認し、マネージド ID を使用するように更新します。
4 オンプレミスの Active Directory または Microsoft Entra ID でアカウントをプロビジョニングする。 API 駆動型インバウンド プロビジョニング アプリを構成します。 これにより、一意の /bulkUpload API エンドポイントが生成されます。 このエンドポイントにデータをアップロードする方法の詳細については、「管理者ユーザーとして一括要求ペイロードを生成してアップロードする」のセクションの手順をご覧ください。 属性フローを検証して、統合の要件に従って属性マッピングをカスタマイズします。 証明書ベースの認証でサービス プリンシパルを使用してスクリプトを実行するには、「クライアント証明書認証を使用して一括要求ペイロードをアップロードする」のセクションの手順をご覧ください カスタム SCIM スキーマで一括要求を使用する場合、プロビジョニング アプリ スキーマを拡張してカスタム SCIM スキーマ要素を含めます。
5 プロビジョニング ログをスキャンして、失敗したレコードのプロビジョニングを再試行します。 プロビジョニング ログのデータをフェッチして分析する方法の詳細については、「最新の同期サイクルのプロビジョニング ログを取得する」のセクションの手順をご覧ください。 失敗したユーザー レコードを特定し、次のアップロード サイクルに含めます。 -
6 運用環境に PowerShell ベースの自動化をデプロイする。 API 駆動型プロビジョニング フローを確認して要件を満たすように PowerShell スクリプトをカスタマイズしたら、その自動化を Azure Automation の PowerShell ワークフロー Runbook として、または Windows サーバーで実行されるようにスケジュールされたサーバー プロセスとしてデプロイできます。 -

PowerShell スクリプトをダウンロードする

  1. GitHub リポジトリ entra-id-inbound-provisioning にアクセスします。
  2. [コード] ->[複製] または [コード] ->[ZIP のダウンロード] オプションを使用して、このリポジトリのコンテンツをローカル フォルダーにコピーします。
  3. PowerShell/CSV2SCIM のフォルダーに移動します。 次のディレクトリ構造があります。
    • src
      • CSV2SCIM.ps1 (メイン スクリプト)
      • ScimSchemaRepresentations (AttributeMapping.psd1 ファイルを検証するための標準の SCIM スキーマ定義を含むフォルダー)
        • EnterpriseUser.json、Group.json、Schema.json、User.json
    • サンプル
      • AttributeMapping.psd1 (CSV ファイル内の列の標準の SCIM 属性へのマッピングのサンプル)
      • csv-with-2-records.csv (2 つのレコードを含むサンプルの CSV ファイル)
      • csv-with-1000-records.csv (1000 個のレコードを含むサンプルの CSV ファイル)
      • Test-ScriptCommands.ps1 (使用コマンドのサンプル)
      • UseClientCertificate.ps1 (自己署名証明書を生成し、OAuth フローで使用するためのサービス プリンシパルとしてアップロードするスクリプト)
      • Sample1 (CSV ファイルの列を SCIM 標準属性にマップする方法のその他の例を含むフォルダー。従業員、請負業者、インターン用に異なる CSV ファイルを取得すると、エンティティごとに個別の AttributeMapping.psd1 ファイルを作成できます。)
  4. 最新バージョンの PowerShell をダウンロードしてインストールします。
  5. コマンドを実行して、リモート署名済みのスクリプトの実行を有効にします。
    set-executionpolicy remotesigned
    
  6. 次の前提条件モジュールをインストールします。
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

標準スキーマを使用して一括要求ペイロードを生成する

このセクションでは、CSV ファイルからの標準 SCIM コア ユーザー属性およびエンタープライズ ユーザー属性を使用して一括要求ペイロードを生成する方法について説明します。 手順を説明するために、CSV ファイル Samples/csv-with-2-records.csv を使用しましょう。

  1. CSV ファイル Samples/csv-with-2-records.csv を Notepad++ または Excel で開き、ファイルに存在する列をチェックします。 Screenshot of columns in Excel.

  2. Notepad++ または Visual Studio Code などのソース コード エディターで、CSV ファイルの列を SCIM 標準スキーマ属性にマッピングできるようにする PowerShell データ ファイル Samples/AttributeMapping.psd1 を開きます。 すぐに使用できる状態で出荷されたファイルには、CSV ファイルの列の対応する SCIM スキーマ属性への事前構成済みのマッピングが既に含まれています。

        @{
        externalId   = 'WorkerID'
        name         = @{
            familyName = 'LastName'
            givenName  = 'FirstName'
        }
        active       = { $_.'WorkerStatus' -eq 'Active' }
        userName     = 'UserID'
        displayName  = 'FullName'
        nickName     = 'UserID'
        userType     = 'WorkerType'
        title        = 'JobTitle'
        addresses    = @(
            @{
                type          = { 'work' }
                streetAddress = 'StreetAddress'
                locality      = 'City'
                postalCode    = 'ZipCode'
                country       = 'CountryCode'
            }
        )
        phoneNumbers = @(
            @{
                type  = { 'work' }
                value = 'OfficePhone'
            }
        )
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
            employeeNumber = 'WorkerID'
            costCenter     = 'CostCenter'
            organization   = 'Company'
            division       = 'Division'
            department     = 'Department'
            manager        = @{
                value = 'ManagerID'
            }
        }
    }
    
  3. PowerShell を開き、ディレクトリ CSV2SCIM\src に変更します。

  4. 次のコマンドを実行して、AttributeMapping 変数を初期化します。

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. 次のコマンドを実行して、AttributeMapping ファイルに有効な SCIM スキーマ属性があるかどうかを検証します。 検証に成功すると、このコマンドは True を返します。

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. AttributeMapping ファイルに userId という無効な SCIM 属性があり、ValidateAttributeMapping モードに次のエラーが表示されるとします。

    Screenshot of a mapping error.

  7. AttributeMapping ファイルが有効であることを確認したら、次のコマンドを実行して、CSV ファイルに存在する 2 つのレコードを含む一括要求を BulkRequestPayload.json というファイルに生成します。

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. ファイル BulkRequestPayload.json のコンテンツを開いて、SCIM 属性がファイル AttributeMapping.psd1 で定義されているマッピングに従って設定されているかどうかを確認できます。

  9. 上記で生成されたファイルは、Graph Explorer、Postman または cURL を使用して、プロビジョニング アプリに関連付けられている /bulkUpload API エンドポイントにそのままの状態で投稿できます。 リファレンス:

  10. 同じ PowerShell スクリプトを使用して、生成されたペイロードを API エンドポイントに直接アップロードするには、次のセクションをご覧ください。

管理者ユーザーとして一括要求ペイロードを生成してアップロードする

このセクションでは、生成された一括要求ペイロードをインバウンド プロビジョニング API エンドポイントに送信する方法について説明します。

  1. 少なくともアプリケーション管理者として Microsoft Entra 管理センターにログインしてください。

  2. [プロビジョニング アプリ]>[プロパティ]>[オブジェクト ID] の順に参照し、プロビジョニング アプリに関連付けられている ServicePrincipalId をコピーします。

    Screenshot of the Object ID.

  3. 全体管理者ロールを持つユーザーとして、次のコマンドの ServicePrincipalIdTenantId に正しい値を指定して実行します。 このテナントに対して認証済みセッションがまだ存在しない場合、認証を求めるメッセージが表示されます。 認証時に求められるアクセス許可に同意します。

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com"
    
  4. 上記の要求の処理を確認するには、プロビジョニング アプリの [プロビジョニング ログ] ブレードにアクセスします。

サービス プリンシパル認証用にクライアント証明書を構成する

注意

こちらの手順では、自己署名証明書を生成する方法を示します。 自己署名証明書は、既定では信頼されないため、管理が困難になる可能性があります。 また、強力でない可能性のある旧式のハッシュや暗号スイートが使用される場合もあります。 セキュリティを強化するには、よく知られている証明機関によって署名された証明書を購入してください。

  1. 次の PowerShell スクリプトを実行して、新しい自己署名証明書を生成します。 既知の証明機関によって署名された証明書を購入した場合、この手順をスキップできます。
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    生成された証明書は Current User\Personal\Certificates に保存されます。 [コントロール パネル] ->[ユーザー証明書の管理] オプションを使用して表示できます。
  2. この証明書を有効なサービス プリンシパルに関連付けるには、アプリケーション管理者として Microsoft Entra 管理センターにログインします。
  3. [アプリの登録]構成したサービス プリンシパルを開きます。
  4. [概要] ブレードから [オブジェクト ID] をコピーします。 この値を使用して文字列 <AppObjectId> を置き換えます。 [アプリケーション (クライアント) ID] をコピーします。この ID は後で使用し、<AppClientId> として参照します。
  5. 次のコマンドを実行して、登録済みのサービス プリンシパルに証明書をアップロードします。
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    証明書は、登録済みアプリの [証明書とシークレット] ブレードに表示されます。 Screenshot of client certificate.
  6. Application.Read.All および Synchronization.Read.All の 2 つのアプリケーション アクセス許可スコープをサービス プリンシパル アプリに追加します。 これらは、PowerShell スクリプトがプロビジョニング アプリを ServicePrincipalId で検索し、プロビジョニング JobId をフェッチするために必要です。

クライアント証明書認証を使用して一括要求ペイロードをアップロードする

このセクションでは、信頼されたクライアント証明書を使用して、生成された一括要求ペイロードをインバウンド プロビジョニング API エンドポイントに送信する方法について説明します。

  1. 構成した API 駆動型プロビジョニング アプリを開きます。 プロビジョニング アプリに関連付けられている ServicePrincipalId[プロビジョニング アプリ]>[プロパティ]>[オブジェクト ID] からコピーします。

    Screenshot of the Object ID.

  2. ServicePrincipalIdClientIdTenantId に正しい値を指定して、次のコマンドを実行します。

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -TenantId "contoso.onmicrosoft.com" -ServicePrincipalId "<ProvisioningAppObjectId>" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint)
    
  3. 上記の要求の処理を確認するには、プロビジョニング アプリの [プロビジョニング ログ] ブレードにアクセスします。

カスタム SCIM スキーマを使用して一括要求を生成する

このセクションでは、カスタム SCIM スキーマ名前空間を使用して、CSV ファイル内のフィールドから成る一括要求を生成する方法について説明します。

  1. Notepad++ または Visual Studio Code などのソース コード エディターで、CSV ファイルの列を SCIM 標準スキーマ属性にマッピングできるようにする PowerShell データ ファイル Samples/AttributeMapping.psd1 を開きます。 すぐに使用できる状態で出荷されたファイルには、CSV ファイルの列の対応する SCIM スキーマ属性への事前構成済みのマッピングが既に含まれています。

  2. PowerShell を開き、ディレクトリ CSV2SCIM\src に変更します。

  3. 次のコマンドを実行して、AttributeMapping 変数を初期化します。

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. 次のコマンドを実行して、AttributeMapping ファイルに有効な SCIM スキーマ属性があるかどうかを検証します。 検証に成功すると、このコマンドは True を返します。

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. SCIM コア ユーザー属性およびエンタープライズ ユーザー属性に加えて、カスタム SCIM スキーマ名前空間 urn:ietf:params:scim:schemas:extension:contoso:1.0:User ですべての CSV フィールドのフラット リストを取得するには、次のコマンドを実行します。

     .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"  > BulkRequestPayloadWithCustomNamespace.json
    

    カスタム SCIM スキーマ名前空間の下に CSV フィールドが表示されます。 Screenshot of user details under custom schema.

プロビジョニング ジョブ スキーマを拡張する

多くの場合、人事チームによって送信されるデータ ファイルには、標準 SCIM スキーマで直接表現されていない属性が多く含まれています。 このような属性を表現するために、SCIM 拡張スキーマを作成して、この名前空間の下に属性を追加することをお勧めします。

CSV2SCIM スクリプトは、UpdateSchema という実行モードを提供します。これは、CSV ファイル内のすべての列を読み取り、拡張スキーマ名前空間の下に追加し、プロビジョニング アプリ スキーマを更新します。

注意

プロビジョニング アプリ スキーマに属性拡張機能が既に存在する場合、このモードでは属性拡張機能が既に存在するという警告だけが出力されます。 そのため、新しいフィールドが CSV ファイルに追加され、それらを拡張機能として追加する場合、UpdateSchema モードで CSV2SCIM スクリプトを実行しても問題ありません。

手順を説明するために、CSV2SCIM フォルダーに存在する CSV ファイル Samples/csv-with-2-records.csv を使用します。

  1. CSV ファイル Samples/csv-with-2-records.csv を Notepad、Excel または TextPad で開いて、ファイルに存在する列を確認します。

    Screenshot of how to check CSV columns.

  2. 次のコマンドを実行します。

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -UpdateSchema -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"
    
  3. [属性マッピング] ページを開き、[詳細オプション][API の属性リストの編集] にアクセスして、プロビジョニング アプリ スキーマの更新を確認できます。

  4. [属性リスト] には、新しい名前空間の下に属性が表示されます。

最新の同期サイクルのプロビジョニング ログを取得する

一括要求を送信した後、Microsoft Entra ID によって処理された最新の同期サイクルのログに対してクエリを実行できます。 同期の統計情報と処理の詳細は、PowerShell スクリプトを使用して取得して分析のために保存できます。

  1. コンソールでログの詳細と同期の統計情報を表示するには、次のコマンドを実行します。

    .\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs -NumberOfCycles 1
    

    Screenshot of sync statistics.

    Note

    既定では NumberOfCycles は 1 です。 同期サイクルをさらに取得するには数値を指定します。

  2. コンソールで同期の統計情報を表示してログの詳細を変数に保存するには、次のコマンドを実行します。

    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs
    

    クライアント証明書認証を使用してコマンドを実行するには、ServicePrincipalIdClientIdTenantId に正しい値を指定してコマンドを実行します。

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId "<ProvisioningAppObjectId>" -TenantId "contoso.onmicrosoft.com" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint) -GetPreviousCycleLogs -NumberOfCycles 1
    
    • 特定のレコードの詳細を表示するには、コレクションをループ処理するか、その特定のインデックスを選択します ($logs[0] など)。

      Screenshot of a selected index.

    • where-object ステートメントを使用して、sourceID または DisplayName を使用して特定のレコードを検索することもできます。 ProvisioningLogs プロパティで、その特定のレコードに対して実行された操作のすべての詳細を確認できます。

      $user = $logs | where sourceId -eq '1222'
      $user.ProvisioningLogs | fl
      

      Screenshot of provisioning logs.

    • ModifiedProperties 属性では、特定のユーザーが影響を受けるプロパティを確認できます。 $user.ProvisioningLogs.ModifiedProperties

      Screenshot of properties.

付録

CSV2SCIM PowerShell の使用の詳細

CSV2SCIM PowerShell スクリプトで受け入れられるコマンドライン パラメーターの一覧を次に示します。

PS > CSV2SCIM.ps1 -Path <path-to-csv-file> 
[-ScimSchemaNamespace <customSCIMSchemaNamespace>] 
[-AttributeMapping $AttributeMapping] 
[-ServicePrincipalId <spn-guid>] 
[-ValidateAttributeMapping]
[-UpdateSchema]
[-ClientId <client-id>]
[-ClientCertificate <certificate-object>]
[-RestartService]

注意

AttributeMappingValidateAttributeMapping のコマンドライン パラメーターは、CSV 列属性の標準 SCIM スキーマ要素へのマッピングを参照します。 ソース SCIM スキーマ要素とターゲット Microsoft Entra/オンプレミスの Active Directory 属性の間で Microsoft Entra 管理センターのプロビジョニング アプリで実行する属性マッピングは参照しません。

パラメーター 説明 処理に関する解説
パス CSV ファイルへの完全パスまたは相対パス。 例: .\Samples\csv-with-1000-records.csv 必須: はい
ScimSchemaNamespace CSV ファイル内のすべての列を、特定の名前空間に属するカスタム SCIM 属性として送信するために使用するカスタム SCIM スキーマ名前空間。 たとえば、urn:ietf:params:scim:schemas:extension:csv:1.0:User 必須: 次のことを実行する場合のみ:
- プロビジョニング アプリ スキーマを更新するか、
カスタム SCIM 属性をペイロードに含める場合。
AttributeMapping CSV ファイル内の列を SCIM コア ユーザー属性およびエンタープライズ ユーザー属性にマップする PowerShell データ (.psd1 拡張機能) ファイルを指します。
CSV2SCIM スクリプトの AttributeMapping.psd ファイルの例をご覧ください。
たとえば、次のように入力します。 powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
必須: はい
これを指定する必要がない唯一のシナリオは、UpdateSchema スイッチを使用する場合のみです。
ValidateAttributeMapping スイッチ フラグを使用して、AttributeMapping ファイルに SCIM コアおよびエンタープライズ ユーザー スキーマに準拠した属性が含まれていることを検証します。 必須: いいえ
コンプライアンスを確保するために使用することをお勧めします。
ServicePrincipalId [プロビジョニング アプリ]>[プロパティ]>[オブジェクト ID] で取得できる、プロビジョニング アプリのサービス プリンシパル ID の GUID 値 必須: 次のことを実行する場合のみ:
- プロビジョニング アプリ スキーマを更新するか、
生成された一括要求を API エンドポイントに送信する場合。
UpdateSchema このスイッチを使用して、CSV 列を読み取り、プロビジョニング アプリ スキーマにカスタム SCIM 属性として追加するようにスクリプトに指示します。
ClientId OAuth 認証フローに使用する Microsoft Entra 登録済みアプリのクライアント ID。 このアプリには、有効な証明書の資格情報が必要です。 必須: 証明書ベースの認証を実行する場合のみ。
ClientCertificate OAuth フロー中に使用するクライアント認証証明書。 必須: 証明書ベースの認証を実行する場合のみ。
GetPreviousCycleLogs 最新の動機サイクルのプロビジョニング ログを取得します。
NumberOfCycles 取得する必要がある同期サイクルの数を指定します。 既定では、この値は 1 です。
RestartService このオプションを使用すると、スクリプトはデータをアップロードする前にプロビジョニング ジョブを一時停止し、データをアップロードしてからジョブを再開して、ペイロードが即時処理されるようにします。 このオプションは、テスト中にのみ使用します。

AttributeMapping.psd ファイル

このファイルは、CSV ファイル内の列を標準の SCIM コア ユーザー属性およびエンタープライズ ユーザー属性スキーマ要素にマップするために使用されます。 また、このファイルは、CSV ファイルの内容を一括要求ペイロードとして適切に表現します。

次の例では、CSV ファイルの次の列が対応する SCIM コア ユーザー属性およびエンタープライズ ユーザー属性にマップされています。

Screenshot of CSV columns for mapped attributes.

    @{
    externalId   = 'WorkerID'
    name         = @{
        familyName = 'LastName'
        givenName  = 'FirstName'
    }
    active       = { $_.'WorkerStatus' -eq 'Active' }
    userName     = 'UserID'
    displayName  = 'FullName'
    nickName     = 'UserID'
    userType     = 'WorkerType'
    title        = 'JobTitle'
    addresses    = @(
        @{
            type          = { 'work' }
            streetAddress = 'StreetAddress'
            locality      = 'City'
            postalCode    = 'ZipCode'
            country       = 'CountryCode'
        }
    )
    phoneNumbers = @(
        @{
            type  = { 'work' }
            value = 'OfficePhone'
        }
    )
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
        employeeNumber = 'WorkerID'
        costCenter     = 'CostCenter'
        organization   = 'Company'
        division       = 'Division'
        department     = 'Department'
        manager        = @{
            value = 'ManagerID'
        }
    }
}

次のステップ