M365関連 プログラム 技術

PowerShellでDateverseを操作する

前回Power系のコマンドについて記事を書きましたが、今回はDateverseについて書いていきます

関連記事
PowerShellでPower系(PowerApps、PowerAutomate)を操作する - ナストンのまとめ
PowerShellでPower系(PowerApps、PowerAutomate)を操作する - ナストンのまとめ

今回はPowershellからPowerApps・PowerAutomateのコマンドについて調べたのでそのメモとなりま ...

続きを読む

バージョン
OSWindows 11 Pro
PowerShell
※PowerShell 7だと今回のモジュールが動作しなかったため
5.1.22621.2506
Microsoft.Xrm.Tooling.CrmConnector.PowerShell(モジュール)3.3.0.1007

モジュールをインストールする

XRMツールコマンドが使用できるように以下のコマンドでモジュールをインストールします

Install-Module -Name Microsoft.Xrm.Tooling.CrmConnector.PowerShell

エラーが発生する

いざインストールしようとすると以下の証明書エラーが発生してインストールできないませんでした

Install-Module: Cannot bind parameter because parameter 'Name' is specified more than once. To provide multiple values to parameters that can accept multiple values, use the array syntax. For example, "-parameter value1,value2,value3".

調べたところ『-SkipPublisherCheck』オプションをつければ証明書エラーを回避して対象モジュールをインストールすることができました

Install-Module -Name Microsoft.Xrm.Tooling.CrmConnector.PowerShell -SkipPublisherCheck

接続する

以下のサイトを参考に接続をします

MSサイト
XRM ツールの PowerShell コマンドレットを使用して Microsoft Dataverse に接続する (Dataverse) - Power Apps | Microsoft Learn
XRM ツールの PowerShell コマンドレットを使用して Microsoft Dataverse に接続する (Dataverse) - Power Apps | Microsoft Learn

Get-CrmConnection や Get-CrmOrganizations などの XRMツール の PowerS ...

続きを読む

今回はこのようにして接続をしています

$CRMConn = Get-CrmConnection -InteractiveMode
画像のようなウィンドウが表示されるので適宜変更してください

実際に情報を操作する

以下のサイトを参考にアクセストークンを使用してAPI経由で操作してみます

参考サイト
Microsoft DataverseのテーブルをPowerShellからCRUD操作してみた #PowerApps - Qiita
Microsoft DataverseのテーブルをPowerShellからCRUD操作してみた #PowerApps - Qiita

概要DataverseのテーブルをPowerShellを使用してWeb APIでCRUD操作します。Power Apps ...

続きを読む

if($CRMConn -ne $null -and $CRMConn.IsReady) {
    # エンドポイントURLを取得
    $ConnectedOrgPublishedEndpoints = $CRMConn.ConnectedOrgPublishedEndpoints["WebApplication"]
    # 対象テーブルの複数系になる。crcf6_testだとcrcf6_testsになる
    $targetTable = "crcf6_tests"
    # アクセストークンを取得
    $token = $CRMConn.CurrentAccessToken
    $headers = @{Authorization = " Bearer $token" }
    $endPoint = $ConnectedOrgPublishedEndpoints + 'api/data/v9.2/' + $targetTable

    # 対象テーブルの全データを取得
    $result = Invoke-RestMethod -Uri $endPoint"?$query" -Method 'GET' -Headers $headers
    Write-Output $result.value

    # 対象テーブル上に新たにデータを作成する(POST)
    $body = '{"crcf6_title":"XYZ","crcf6_response_details":"385"}'
    $result = Invoke-RestMethod -Uri $endPoint -Method 'POST' -Headers $headers -Body $body -ContentType "application/json"

    # 対象テーブル上に既存データを更新する(PATCH)
    $body = '{"crcf6_title":"XYZ","crcf6_response_details":"385Update"}'
    $rowId = "対象データのID" # 対象テーブル名idとなっている列の値:【crcf6_testid】
    Invoke-RestMethod -Uri $endPoint"($rowId)" -Method 'PATCH' -Headers $headers -Body $body -ContentType "application/json"

    # 対象テーブル上の既存データの削除(DELETE)
    Invoke-RestMethod -Uri $endPoint"($rowId)" -Method 'DELETE' -Headers $headers
}

最後に

調べてみましたが情報がほとんどなく困ったのですが何とかテーブルの情報操作ができるようになりました。もう少し、実際にさわってみて掘り下げる必要がありそうです

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています。

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-M365関連, プログラム, 技術
-,