Cmdlets for Microsoft Dynamics 365

Build 25.0.9434

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でDynamics365 Cmdlets を使用する例を示します。

Microsoft Dynamics 365 への接続

Microsoft Dynamics 365 ドライバーは、以下のMicrosoft Dynamics 365 エディションへの接続をサポートしています。

  • CustomerService
  • FieldService
  • FinOpsOnline(デフォルト)
  • FinOpsOnPremises
  • HumanResources
  • Marketing
  • ProjectOperations
  • Sales

Notes:

  • Supply Chain Management はFinance and Operations と同一です。これらのいずれかに接続するには、EditionFinOpsOnline またはFinOpsOnPremises のいずれかに設定します。
  • Microsoft Dynamics 365 Business Central については、個別のMicrosoft Dynamics 365 Business Central ドライバーを使用してください。

サポートされているMicrosoft Dynamics 365 エディションのいずれかに接続するには、次のパラメータを設定します。

  • OrganizationURL:お使いのMicrosoft Dynamics 365 組織のURL。例えば、https://orgcb42e1d0.crm.dynamics.com
  • Edition:上記のエディション一覧に示すとおり。

Microsoft Dynamics 365 への認証

Microsoft Dynamics 365 は、Microsoft Entra ID(Azure AD)、Azure サービスプリンシパル、Azure マネージドID(MSI)を経由する認証をサポートします。これらはすべてOAuth 規格に基づきます。 以下のサブセクションでは、これらの認証スキームの設定方法について説明します。

Note: 開始する前に、組織がサポートしている認証スキームを確認してください。 必要に応じて、システム管理者に相談してください。

Entra ID(Azure AD)

Note:Microsoft はAzure ADEntra ID にリブランドしました。ユーザーがEntra ID 管理サイトを操作する必要があるトピックでは、Microsoft が使用している名称と同じものを使用します。ただし、名前または値が"Azure AD" を参照しているCData 接続プロパティは、依然として存在します。

Microsoft Entra ID は、マルチテナント型のクラウドベースのID およびアクセス管理プラットフォームです。 OAuth ベースの認証フローに対応しており、ドライバーによるMicrosoft Dynamics 365 エンドポイントへのセキュアなアクセスを実現します。

Web アプリケーションを介したEntra ID への認証には、必ずはじめにカスタムOAuth アプリケーションを作成して登録する必要があります。 これにより、アプリケーションは独自のリダイレクトURI を定義し、クレデンシャルのスコープを管理し、組織固有のセキュリティポリシーに準拠することができるようになります。

カスタムOAuth アプリケーションの作成および登録方法の詳細については、Entra ID(Azure AD)アプリケーションの作成 を参照してください。

AuthSchemeAzureAD に設定した後の認証手順は、環境によって異なります。 デスクトップアプリケーション、Web ベースのワークフロー、またはヘッドレスシステムから接続する方法の詳細については、以下のセクションを参照してください。

デスクトップアプリケーション

デスクトップアプリケーションでは、ドライバーに組み込まれたOAuth アプリケーション、またはMicrosoft Entra ID に登録されたカスタムOAuth アプリケーションのいずれかを使用して認証を行うことができます。

オプション1:組み込みOAuth アプリケーションの使用

これはドライバーに含まれている、事前登録済みのアプリケーションです。 セットアップが簡単で、独自の認証情報を登録する必要がないため、開発環境、単一ユーザー向けツール、または迅速かつ簡単な認証が求められる構成に最適です。

次の接続プロパティを設定します。

  • AuthSchemeAzureAD
  • InitiateOAuth
    • GETANDREFRESH – 初回ログイン時に使用します。ログインページを起動し、トークンを保存します。
    • REFRESH – すでに有効なアクセストークンおよびリフレッシュトークンを取得している場合は、この設定を使用します。保存されたトークンを再利用するため、ユーザーに再度プロンプトを表示することはありません。

接続時には、ドライバーは既定のブラウザでMicrosoft Entra のサインインページを開きます。 サインインしてアクセスを許可すると、ドライバーはアクセストークンおよびリフレッシュトークンを取得し、OAuthSettingsLocation で指定されたパスに保存します。

オプション2:カスタムOAuth アプリケーションの使用

組織でセキュリティポリシーの管理、リダイレクトURI の設定、アプリケーションのブランディングなど、より高度な制御が必要な場合は、代わりにMicrosoft Entra ID にカスタムOAuth アプリケーションを登録し、接続時にその値を指定することができます。

登録時に、以下の値を記録してください。

  • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
  • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。
  • CallbackURL:アプリケーション登録時に定義したリダイレクトURI。

カスタムOAuth アプリケーションの登録とリダイレクトURI の設定方法の詳細については、Entra ID(Azure AD)アプリケーションの作成 を参照してください。

次の接続プロパティを設定します。

  • AuthSchemeAzureAD
  • InitiateOAuth
    • GETANDREFRESH – 初回ログイン時に使用します。ログインページを起動し、トークンを保存します。
    • REFRESH – すでに有効なアクセストークンおよびリフレッシュトークンを取得している場合は、この設定を使用します。保存されたトークンを再利用するため、ユーザーに再度プロンプトを表示することはありません。
  • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
  • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。
  • CallbackURL:アプリケーション登録時に定義したリダイレクトURI。

認証後、トークンはOAuthSettingsLocation に保存されます。 これらの値はセッションをまたいで保持され、アクセストークンの有効期限が切れた際に自動的に更新されるため、次回以降の接続時に再度ログインする必要はありません。

ヘッドレスマシン

CI / CD パイプライン、バックグラウンドサービス、サーバーベース連携などのヘッドレス環境では、対話型のブラウザが使用できません。 AzureAD を使用して認証するには、別のデバイス上のブラウザでOAuth フローを完了し、その認証結果をヘッドレスシステムに転送する必要があります。

セットアップオプション :

  • Verifier code を取得および交換
    • 別のデバイスを使用してサインインし、Verifier code を取得します。ヘッドレスシステムがこのコードを使用してトークンを要求します。
  • OAuth 設定ファイルを転送
    • 別のデバイスで認証を行い、その後、保存されたトークンファイルをヘッドレス環境にコピーします。

Verifier code の使用

  1. ブラウザを備えたデバイスで:
    • カスタムOAuth アプリケーションを使用する場合は、次のプロパティを設定します。
      • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
      • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。
    • GetOAuthAuthorizationUrl ストアドプロシージャを呼び出し、サインインURL を生成します。
    • 返されたURL をブラウザで開きます。サインインして、ドライバーにアクセス許可を与えます。verifier code を含むコールバックURL にリダイレクトされます。
    • サインイン後、リダイレクトURL のcode パラメータの値を保存します。この値は後でOAuthVerifier 接続プロパティを設定する際に使用します。
  2. ヘッドレスマシンで:
    • 次のプロパティを設定します。
      • AuthSchemeAzureAD
      • OAuthVerifier:保存したverifier code。
      • OAuthSettingsLocation:OAuth トークンの値を保存するファイルのパス。
      • カスタムアプリケーションの場合:
        • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
        • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。
    • トークンを保存した後、以下の設定により再利用できます。
      • OAuthSettingsLocation:アクセストークンの自動リフレッシュを有効にするために、この場所がドライバーに読み書きのアクセス許可を与えることを確認してください。
      • カスタムアプリケーションの場合:
        • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
        • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。

OAuth 設定を転送

  1. ブラウザを備えたデバイスで:
    • デスクトップアプリケーションセクションの説明に従って接続します。
    • 接続後、トークンはOAuthSettingsLocation のファイルパスに保存されます。デフォルトのファイル名はOAuthSettings.txt です。

  2. ヘッドレスマシンで:
    • OAuth 設定ファイルをマシンにコピーします。
    • 次のプロパティを設定します。
      • AuthSchemeAzureAD
      • OAuthSettingsLocation:アクセストークンの自動リフレッシュを有効にするために、この場所がドライバーに読み書きのアクセス許可を与えることを確認してください。
      • カスタムアプリケーションの場合:
        • OAuthClientId:カスタムOAuth アプリケーションの登録時に生成されたクライアントId。
        • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に生成されたクライアントシークレット。

セットアップ後、ドライバーは保存されたトークンを使用してアクセストークンを自動的に更新するため、ブラウザや手動でのログインは必要ありません。

Azure サービスプリンシパル

Note:Microsoft はAzure ADEntra ID にリブランドしました。ユーザーがEntra ID 管理サイトを操作する必要があるトピックでは、Microsoft が使用している名称と同じものを使用します。ただし、名前または値が"Azure AD" を参照しているCData 接続プロパティは、依然として存在します。

サービスプリンシパルは、Microsoft Entra ID(Azure AD)アプリケーション内のセキュリティオブジェクトであり、そのアプリケーションが特定のテナント内で何を行えるかを定義します。 サービスプリンシパルはEntra 管理センターで作成でき、Azure ポータルからもアクセス可能です。 作成プロセスの過程で、サービスプリンシパルがクライアントシークレットまたは証明書のどちらを経由してEntra リソースにアクセスするかも指定します。

接続先のサービスによっては、テナント管理者がサービスプリンシパル認証を有効にするか、サービスプリンシパルを適切なロールまたはセキュリティグループに割り当てる必要があります。

サービスプリンシパルの権限は、特定のユーザーに紐づくのではなく、割り当てられたロールに基づきます。 これらのロールは、アプリケーションがアクセスできるリソースと、実行できる操作を決定します。

サービスプリンシパルを使用して認証する場合、Entra ID(Azure AD)でのサービスプリンシパルアプリの作成 で説明するようにEntra テナントにアプリケーションを登録する必要があります。

このサブセクションでは、接続前に設定する必要があるプロパティについて説明します。 これらは、クライアントシークレットで認証するか、証明書で認証するかによって異なります。

クライアントシークレットによる認証

  • AuthSchemeAzureServicePrincipal
  • AzureTenant:接続するAzure AD テナント。
  • OAuthClientId:アプリケーション設定のクライアントID。
  • OAuthClientSecret:アプリケーション設定のクライアントシークレット。
  • InitiateOAuthGETANDREFRESH。InitiateOAuth を使うと、OAuth 交換の繰り返しや、手動でのOAuthAccessToken 設定を避けられます。

証明書による認証

Managed Service Identity (MSI)

Azure VM 上でMicrosoft Dynamics 365 を実行しており、マネージドID(MSI)認証情報を自動的に取得して接続したい場合は、AuthSchemeAzureMSI に設定します。

User-Managed Identities

マネージドID のトークンを取得するには、OAuthClientId プロパティを使用してマネージドID のclient_id を指定します。

VM に複数のユーザーが割り当てられたマネージドID がある場合は、OAuthClientId も指定する必要があります。

接続オブジェクトの作成

Connect-Dynamics365 cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-Dynamics365 -OrganizationUrl "https://myaccount.operations.dynamics.com/" -Edition "Sales"

データの取得

Select-Dynamics365 cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-Dynamics365 -Connection $conn -Table "GoalHeadings" -Columns @("GoalHeadingId, GoalHeadingId") -Where "Name='MyAccount'"
Invoke-Dynamics365 cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-Dynamics365 -Connection $conn -Table GoalHeadings -Where "Name <> 'MyAccount'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myGoalHeadingsData.csv -NoTypeInformation

Select-Dynamics365 からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-Dynamics365 -OrganizationUrl "https://myaccount.operations.dynamics.com/" -Edition "Sales"
PS C:\> $row = Select-Dynamics365 -Connection $conn -Table "GoalHeadings" -Columns (GoalHeadingId, GoalHeadingId) -Where "Name <> 'MyAccount'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "GoalHeadings",
  "Columns":  [

  ],
  "GoalHeadingId":  "MyGoalHeadingId",
  "GoalHeadingId":  "MyGoalHeadingId"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-Dynamics365 -Connection $conn -Table GoalHeadings -Where "Name = 'MyAccount'" | Remove-Dynamics365

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをMicrosoft Dynamics 365 にロードします。

Import-Csv -Path C:\MyGoalHeadingsUpdates.csv | %{
  $record = Select-Dynamics365 -Connection $conn -Table GoalHeadings -Where ("GoalHeadingId = `'"+$_.GoalHeadingId+"`'")
  if($record){
    Update-Dynamics365 -Connection $conn -Table GoalHeadings -Columns @("GoalHeadingId","GoalHeadingId") -Values @($_.GoalHeadingId, $_.GoalHeadingId) -Where "GoalHeadingId  = `'$_.GoalHeadingId`'"
  }else{
    Add-Dynamics365 -Connection $conn -Table GoalHeadings -Columns @("GoalHeadingId","GoalHeadingId") -Values @($_.GoalHeadingId, $_.GoalHeadingId)
  }
}

Copyright (c) 2025 CData Software, Inc. - All rights reserved.
Build 25.0.9434