この PowerShell サンプルでは、Dataverse Web API を使用してテーブル、列、リレーションシップの定義を作成および変更する操作を実行する方法を示します。
このサンプルでは、 Web API テーブル スキーマ操作のサンプル で詳しく説明されている Dataverse 操作とコンソール出力を実装し、 Dataverse Web API PowerShell ヘルパー関数 を使用して認証を管理し、一般的な操作を実行するための再利用可能な関数を提供します。 これらのスクリプトは、次の行で ドット ソーシング を使用して参照されます。
. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.ps1
. $PSScriptRoot\..\MetadataOperations.ps1
注
このサンプルは Windows、Linux、macOS で動作するはずですが、Windows でのみテストされています。
[前提条件]
このサンプルを実行する前に、これらのサンプルで使用される概念とパターンについて説明した次の記事を読む必要があります。
- PowerShell と Visual Studio Code を使用したクイック スタート Web API
- Dataverse Web API で PowerShell と Visual Studio Code を使用する
これらの記事には同じ前提条件があります。
以下をインストールするか、インストールされていることを確認する
Visual Studio Code をインストールします。 Visual Studio Code をダウンロードする を参照してください
Visual Studio Code 用の PowerShell 拡張機能をインストールします。 Visual Studio Code 用 PowerShell を参照してください
PowerShell 7.4 移行をインストールします。 Windows、Linux、macOS に PowerShell をインストールする を参照します
Az PowerShell モジュール バージョン 11.1.0 以降をインストールします。 Azure PowerShell をインストールする方法 を参照します
既存のインストールを最新のバージョンに更新 するには、
Update-Module -Name Az -Forceを使います
インストールを検証する
Visual Studio Code を開きます。
[ ターミナル ] メニューの [ 新しいターミナル] を選択します。
Visual Studio Code ナビゲーション ウィンドウで、PowerShell 拡張機能の
アイコンを選択します。Visual Studio Code ターミナル ウィンドウで、次のスクリプトをコピーして貼り付けます:
Write-Host 'PowerShell Version:'$PSVersionTable.PSVersion.ToString() Write-Host 'PowerShell Az version:'(Get-InstalledModule Az).VersionEnter キーを押します。 出力は、次の例のようになります。
PowerShell Version: 7.4.0 PowerShell Az version: 11.1.0
このような結果が表示されない場合は、前提条件をインストールまたは更新してください。
さらに必要なこと
- Dataverse 環境に有効なユーザー アカウント
- 接続する Dataverse 環境への URL。 検索方法については、開発者向けリソースを表示 をご覧ください。 次のようになります:
https://yourorg.crm.dynamics.com/、これはyourorg.crmが異なります。 - PowerShell スクリプト言語の基本的な解釈
このサンプルを実行する方法
PowerApps-サンプル リポジトリをクローンまたはダウンロードします。
Visual Studio Code を使って
/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1ファイルを開きますこの行を編集して、接続したい環境の URL を使用します。
Connect 'https://yourorg.crm.dynamics.com/' # change this(オプション) このサンプルが作成するレコードを削除したくない場合は、
$deleteCreatedRecords変数を$falseに設定します。F5 を押してサンプルを実行します。
サンプルを初めて実行すると、ブラウザ ウィンドウが開きます。 ブラウザ ウィンドウで、認証に使用する資格情報を入力または選択します。
別のユーザーとして接続するには、Disconnect-AzAccount コマンド を実行して、再試行してください。
Code
このサンプルのコードは次のとおりです: PowerApps-Samples/dataverse/webapi/PS/MetadataOperations/MetadataOperationsSample.ps1
対象
このサンプルには 11 つのリージョンがあります:
セクション 0: 発行者とソリューションを作成
操作: ソリューション レコードと関連する発行元レコードを作成します。
注
このサンプルで作成されたすべてのソリューション コンポーネントは、エクスポートできるようにソリューションに関連付けられます。 名前付きメッセージのない操作の場合、この関連付けは、 MSCRM.SolutionUniqueName 要求ヘッダーを使用して作成され、ソリューションの一意の名前が値として設定されます。
ソリューション コンポーネントのすべての名前には、パブリッシャーのカスタマイズ プレフィックスを使用してプレフィックスが付けられます。
セクション 1: テーブルの作成、取得、更新
操作:
-
sample_BankAccountにPOST要求を送信して、ユーザー所有の新しい/EntityDefinitionsテーブルを作成します。 -
GETに/EntityDefinitions(LogicalName='sample_bankaccount')要求を送信して、作成されたテーブルを取得します。 -
PUT要求を/EntityDefinitions(LogicalName='sample_bankaccount')に送信して、テーブルを更新します。
セクション 2: 列の作成、取得、および更新
操作:
-
GET要求を/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')に送信して、sample_booleanブール値列を取得しようと試みます。 - 列がまだ存在しない場合は、
sample_booleanにsample_BankAccount要求を送信して、POSTテーブルの新しい/EntityDefinitions(LogicalName='sample_bankaccount')/Attributesブール型列を作成します。 -
sample_booleanにPUT要求を送信して、/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_boolean')ブール値列を更新します。 -
sample_booleanを使用して、ブール値列のオプション ラベルを更新します。 -
sample_BankAccountテーブルのsample_datetimedatetime 列を取得して、存在しない場合は作成します。 -
sample_BankAccountテーブルのsample_decimal小数列を取得して、存在しない場合は作成します。 -
sample_integerテーブルの整数列sample_BankAccount取得を試み、存在しない場合は作成します。 -
sample_BankAccountテーブルのsample_memoメモ列を取得して、存在しない場合は作成します。 -
sample_BankAccountテーブルのsample_money金額列を取得して、存在しない場合は作成します。 -
sample_choiceテーブルのsample_BankAccount選択列を取得し、存在しない場合は作成します。 -
sample_choiceを使用して、列に新しいオプションを追加します。 -
sample_choiceを使用して、列のオプションの順序を変更します。 -
sample_choiceを使用して、列のいずれかのオプションを削除します。 -
sample_multiselectchoiceテーブルのsample_BankAccount複数選択選択列を取得し、存在しない場合は作成します。 -
sample_BankAccountを使用して、 テーブルの新しい Status オプションを作成します。
セクション 3: グローバル OptionSet の作成および使用
操作:
-
sample_colorsにPOST要求を送信して、/GlobalOptionSetDefinitionsという名前の新しいグローバル選択を作成します。 -
sample_colorsにGET要求を送信して、/GlobalOptionSetDefinitions(<id value>)グローバル選択を取得します。 -
sample_colors要求をsample_BankAccountに送信し、グローバル選択に関連付けることで、sample_colorsグローバル選択を使用して、POSTテーブルの新しい/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes選択列を作成します。
セクション 4: 顧客リレーションシップの作成
操作:
-
sample_customeridを使用して、sample_BankAccountテーブルの新しい顧客列を作成します。 -
sample_customeridにGET要求を送信して、顧客/EntityDefinitions(LogicalName='sample_bankaccount')/Attributes(LogicalName='sample_customerid')列を取得します。 -
GETに/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata要求を送信して、顧客列に対して作成されたリレーションシップを取得します。
セクション 5: 一対多の関連付けの作成と取得
操作:
-
sample_BankAccountを使用して、 テーブルが 1:N リレーションシップで参照される資格があることを確認します。 -
contactを使用して、 テーブルが 1:N リレーションシップ内の他のテーブルを参照する資格があることを確認します。 -
sample_BankAccountを使用して、1:N リレーションシップでテーブルを参照できる他のテーブルを特定します。 -
sample_BankAccount要求をcontactに送信して、POSTテーブルと/RelationshipDefinitionsテーブルの間に 1:N リレーションシップを作成します。 -
GETに要求を送信して、/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadataから1:Nリレーションシップを取得します。
セクション 6: 多対一の関連付けの作成と取得
操作:
-
POSTに要求を送信して、sample_BankAccountとaccountテーブルの間に N:1 リレーションシップを/RelationshipDefinitionsで作成します。 -
GETに/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata要求を送信して、N:1 リレーションシップを取得します。
セクション 7: 多対多の関連付けの作成と取得
操作:
-
sample_BankAccountを使用して、contactテーブルと テーブルが N:N リレーションシップに参加する資格があることを確認します。 -
sample_BankAccountを使用して、contactテーブルと テーブルが N:N リレーションシップに参加する資格があることを確認します。 -
sample_BankAccount要求をcontactに送信して、POSTテーブルと/RelationshipDefinitionsテーブルの間に N:N リレーションシップを作成します。 -
GETに要求/RelationshipDefinitions(<id>)/Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata送信して、N:N リレーションシップを取得します。
セクション 8: 管理ソリューションのエクスポート
操作: 「セクション 0:ExportSolution アクションを使用して、このサンプルで作成した項目を含むパブリッシャーとソリューションを作成する」で作成したソリューションをエクスポートします。
セクション 9: サンプル レコードを削除
操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このサンプルでは、レコードは作成された逆の順序で削除されます。
セクション10: 管理ソリューションのインポートと削除
操作:
- ImportSolution アクションを使用して、セクション 8 でエクスポートしたソリューションをインポートします。
- ソリューション テーブルにクエリを実行して、インポートされたソリューションの
solutionidを取得します。 -
solutionidを使用して、インポートしたソリューションを削除します。
クリーンアップ
既定では、このサンプルでは、その中に作成されたすべてのレコードが削除されます。 サンプルの完了後に作成されたレコードを表示する場合は、 deleteCreatedRecords 変数を false に変更すると、レコードを削除するかどうかを決定するように求められます。
こちらも参照ください
Dataverse Web API を使用する
テーブル定義で Web API を使用する
Web API サンプル
Web API の基本的な操作のサンプル (PowerShell)