Powershell からの Dynamics CRM データ連携タスクを自動化

加藤龍彦
ウェブデベロッパー


こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。



CData ADO.NET Provider for DynamicsCRM は、ADO.NET 標準インターフェースへ統合し、PowerShell のような. NET アプリケーションからDynamics CRM API へのデータ連携を可能にします。このプロバイダーは、Dynamics CRM の認証および相互作用を簡単にします。このチュートリアルでは、PowerShell から直接SQL クエリを実行するための、いくつかの一般的なADO.NET オブジェクトの使い方を説明します。

クエリの実行

次の3つのステップに従って create、read、update、およびdelete (CRUD) のデータ連携コマンドを PowerShell からリアルタイムDynamics CRM に実行:

  1. プロバイダーのアセンブリをロード:

    [Reflection.Assembly]::LoadFile("C:\Program Files\CData\CData ADO.NET Provider for DynamicsCRM\lib\System.Data.CData.DynamicsCRM.dll")
  2. Dynamics CRM に接続:

    Dynamics CRM では、インスタンスごとに接続文字列の設定が必要です。 Authentication セクションでは、有効なDynamics CRM のUser、Password の入力、およびDynamics CRM Server Organization root のURL を設定します。さらに、CRMVersion プロパティに、'CRM2011+' もしくは'CRMOnline' を設定します。IFD コンフィグレーションもサポートされていますので、InternetFacingDeployment をTRUE に設定してください。

    また、Security Token Service(STS)、もしくはAD FS エンドポイントをSTSURL プロパティに設定することもできます。 この値はGetSTSUrl ストアドプロシージャで取得できます。 Office 365 ユーザーはデフォルトSTS URL にCRMVersion の設定だけで接続することができます。

    $constr = "User=myuseraccount;Password=mypassword;URL=https://myOrg.crm.dynamics.com/;CRM Version=CRM Online;" $conn= New-Object System.Data.CData.DynamicsCRM.DynamicsCRMConnection($constr) $conn.Open()
  3. DynamicsCRMDataAdapter のインスタンスを生成してSQL クエリを実行し、結果を出力:

    $sql="SELECT FirstName, NumberOfEmployees from Account" $da= New-Object System.Data.CData.DynamicsCRM.DynamicsCRMDataAdapter($sql, $conn) $dt= New-Object System.Data.DataTable $da.Fill($dt) $dt.Rows | foreach { Write-Host $_.firstname $_.numberofemployees }

Dynamics CRM データの更新

$cmd = New-Object System.Data.CData.DynamicsCRMCommand("UPDATE Account SET FirstName='Bob' WHERE Id = @myId", $conn) $cmd.Parameters.Add(new System.Data.CData.DynamicsCRMParameter("myId","10456255-0015501366")) $cmd.ExecuteNonQuery()

Dynamics CRM へのデータの挿入

$cmd = New-Object System.Data.CData.DynamicsCRMCommand("UPDATE Account SET FirstName='Bob' WHERE Id = @myId", $conn) $cmd.Parameters.Add(new System.Data.CData.DynamicsCRMParameter("myId","10456255-0015501366")) $cmd.ExecuteNonQuery()

Dynamics CRM データの削除

$cmd = New-Object System.Data.CData.DynamicsCRMCommand("UPDATE Account SET FirstName='Bob' WHERE Id = @myId", $conn) $cmd.Parameters.Add(new System.Data.CData.DynamicsCRMParameter("myId","10456255-0015501366")) $cmd.ExecuteNonQuery()

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。