この PowerShell バージョン 7.4.0 サンプルでは、Dataverse Web API を使用して Microsoft Dataverse テーブル行に対してさまざまなクエリ操作を実行する方法を示します。 このサンプルでは、 Web API クエリ データ サンプルで詳しく説明されている Dataverse 操作とコンソール出力を実装します。
このサンプルでは、 Dataverse Web API PowerShell ヘルパー関数 を使用して認証を管理し、一般的な操作を実行するための再利用可能な関数を提供します。 これらのスクリプトは、次の行で ドット ソーシング を使用して参照されます。
. $PSScriptRoot\..\Core.ps1
. $PSScriptRoot\..\TableOperations.ps1
. $PSScriptRoot\..\CommonFunctions.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 を使って
QueryData.ps1ファイルを開きますこの行を編集して、接続したい環境の URL を使用します。
Connect 'https://yourorg.crm.dynamics.com/' # change this(オプション) このサンプルが作成するレコードを削除したくない場合は、
$deleteCreatedRecords変数を$falseに設定します。F5 を押してサンプルを実行します。
サンプルを初めて実行すると、ブラウザ ウィンドウが開きます。 ブラウザ ウィンドウで、認証に使用する資格情報を入力または選択します。
別のユーザーとして接続するには、Disconnect-AzAccount コマンド を実行して、再試行してください。
Code
このサンプルのコードは、PowerApps-Samples/dataverse/webapi/PS/QueryData/QueryData.ps1 にあります。
対象
このサンプルには 11 つのリージョンがあります:
セクション 0: クエリするレコードを作成
操作: 関連する連絡先レコードおよび各連絡先に関連するタスクレコードを含むアカウントレコードを作成します。 これは、デモ全体で使用されるサンプル データです。
セクション 1: 特定のプロパティの選択
オペレーション
- システム クエリ オプション
$select使用して、特定のプロパティを取得します。 - 書式設定された値を取得するには、ヘッダー
Prefer: odata.include-annotations="*"を含めます。
セクション 2: クエリ関数の使用
オペレーション
- 結果をフィルター処理するには、
contains、endswith、startswithなどの標準クエリ関数を使用します。 -
LastXHours、Last7Days、Today、Between、Inなどの Dataverse 固有のクエリ関数を使用します。 - フィルター演算子と論理演算子 (
eq、ne、gt、and、or) を使用します。 - フィルター式で丸括弧を使用して優先順位を設定します。
セクション 3: 順序とエイリアス
オペレーション
-
$orderbyを使用してクエリ結果を並べ替えます。 -
$filterと$orderbyでパラメーター化されたエイリアスを使用して、クエリを簡略化します。
セクション 4: 結果の制限とカウント
オペレーション
-
$topを使用して、返される結果の数を制限します。 -
$countを使用して、クエリに一致するレコードの合計数を取得します。
セクション 5: ページ割り付け
オペレーション
- ページ サイズを制御するには、
Prefer: odata.maxpagesize要求ヘッダーを使用します。 -
@odata.nextLink注釈を使用して、後続の結果ページを取得します。
セクション 6: 結果の拡張
オペレーション
-
$expandを単一値ナビゲーション プロパティと共に使用して、関連レコードを含めます。 - コレクション値ナビゲーション プロパティで
$expandを使用します。 - 1 つの要求で複数のナビゲーション プロパティで
$expandを使用します。 - 入れ子になった
$expandを使用して、複数のレベルの関連レコードを取得します。
セクション 7: 結果の集計
操作: 集計値を計算するには、$apply=aggregate、average、sum、minなどの関数でmaxを使用します。
セクション 8 : FetchXML のクエリ
オペレーション
-
fetchXmlクエリ文字列パラメーターと共に FetchXML を使用して要求を送信します。 -
page属性とcount属性を使用して FetchXML でページングを使用します。
セクション 9: 定義済みのクエリの使用
オペレーション
-
savedQueryパラメーターを使用して、保存されたクエリ (システム ビュー) を実行します。 -
userQueryパラメーターを使用してユーザー クエリ(保存されたビュー)を実行します。
セクション 10: サンプル レコードを削除
操作: このサンプルで作成された各レコードへの参照は、作成時にリストに追加されました。 このセクションでは、そのリストをループし、各レコードを削除します。
クリーンアップ
デフォルトでは、このサンプルでは作成されたすべてのレコードが削除されます。 サンプルの完了後に作成されたレコードを表示したい場合は、deleteCreatedRecords 変数を false に変更して、レコードを削除するかどうかを決定するプロンプトが表示されます。
こちらも参照ください
Dataverse Web API を使用する
Web API を使用してデータのクエリを実行する
PowerShell と Visual Studio Code を使ったクイックスタート Web API
Dataverse Web API で PowerShell と Visual Studio Code を使用する
Web API サンプル
Web API クエリ データのサンプル
Web API クエリ データのサンプル (C#)
Web API クエリ データ サンプル (クライアント側 JavaScript)