テナントのカタログに関するデータを取得するには、カタログがインストールされている環境を特定する必要があります。 次に、この情報を提供するように設計されたテーブルまたは API を照会することにより、その環境からカタログに関するデータを取得できます。
ほとんどのテナントではカタログは 1 つだけインストールされますが、テナント内の複数の環境にカタログをインストールすることもできます。
テナント内でカタログのある環境を見つける
pac admin list コマンドを使用して、テナント内のカタログを含む環境を表示します。
注意
このコマンドには、管理者の認証プロファイルが必要です。
このコマンドを使用する場合、次の --application パラメータを値 83a35943-cb41-4266-b7d2-81d60f383695 で使用する必要があります。 この値は、カタログに関連付けられたアプリケーション ID です。
PS C:\Users\you> pac admin list --application 83a35943-cb41-4266-b7d2-81d60f383695
Connected as you@yourorg.onmicrosoft.com
Listing all environments from your tenant...
Active Environment Environment ID Environment Url Type Organization ID
* Your Org b16bdb7a-e023-4158-a839-4f8831ed2432 https://yourorg.crm.dynamics.com/ Production e20be4c1-02ce-4e81-93c6-6e95ff053943
カタログ テーブル
テナント内の環境に Power Platform カタログ マネージャー アプリケーションをインストールすると、Power Platform テーブル/エンティティ参照内のカタログ にリストされているテーブルがその環境のみに追加されます。
次の表に、使用する可能性のある最も重要なテーブルの一部を示します。
| テーブル | プロパティ |
|---|---|
| 承認要求 (mspcat_certificationrequest) | カタログ システムへの新規または更新済みの送信を処理する際に使用する、承認レコードを含みます。 |
| カタログ発行元 (mspcat_publisher) | TPS パブリッシャ データを保持するためのパブリッシャ エンティティ。 |
| カタログ アイテム (mspcat_applications) | カタログに表示されるエントリ |
| パッケージ (mspcat_packages) | カタログ品目の展開資産。 |
| インストール履歴 (mspcat_InstallHistory) | インストールとその状態のレコードを含みます |
| インストール アクティビティ (mspcat_InstallActivity) | インストール履歴アクティビティ ID |
カタログ情報の表示
カタログに関する情報を取得するために使用できる Dataverse メッセージは 2 つあります。
-
mspcat_GetPowerCatalogInformationこのメッセージは高速で、カタログの最小限の許可と記述データを提供することを意図しています。 -
mspcat_GetPowerCatalogDetailsこのメッセージの内容を使用して、送信ドキュメントを入力し、このカタログでカタログ アイテムと発行元を参照するためのラベルを設定します。
mspcat_GetPowerCatalogInformation
mspcat_GetPowerCatalogInformation のメッセージは permissionsonly ブール値のパラメーターを 1 つ持ち、mspcat_GetPowerCatalogInformationResponse の複合型で定義された以下の情報を返します:
| 件名 | タイプ | プロパティ |
|---|---|---|
SolutionVersion |
文字列 | インストールされたカタログ ソリューションのバージョン |
CatalogDescription |
文字列 | このカタログの目的を説明します |
CanRead |
ブール値 | ユーザーによるカタログ項目の読み取りの可否 |
CatalogName |
文字列 | この環境にインストールされているカタログの名前 |
ImageLink |
文字列 | 設定する場合は、カタログの画像を選択します |
CanSubmit |
ブール値 | ユーザーによるカタログへの項目の送信の可否 |
ブール値のパラメーター permissionsonly がtrueの場合、CatalogDescription、CatalogName、ImageLink の値は返されません。 常に SolutionVersion、CanRead、CanSubmit の値が返されます。
次の GetPowerCatalogInformationExample 静的メソッドは、mspcat_GetPowerCatalogInformationRequest コマンドによって mspcat_GetPowerCatalogInformationResponse メッセージ用に生成された mspcat_GetPowerCatalogInformation および クラスを使用してデータを取得します。
/// <summary>
/// Returns data about the catalog for an environment
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
/// <param name="permissionsonly">Whether to only return information about permissions.</param>
static void GetPowerCatalogInformationExample(IOrganizationService service, bool permissionsonly = false)
{
var request = new mspcat_GetPowerCatalogInformationRequest();
if (permissionsonly) {
request.permissionsonly = true;
}
var response = (mspcat_GetPowerCatalogInformationResponse)service.Execute(request);
Console.WriteLine($"SolutionVersion: {response.SolutionVersion}");
Console.WriteLine($"CatalogDescription: {response.CatalogDescription}");
Console.WriteLine($"CanRead: {response.CanRead}");
Console.WriteLine($"CatalogName: {response.CatalogName}");
Console.WriteLine($"ImageLink: {response.ImageLink}");
Console.WriteLine($"CanSubmit: {response.CanSubmit}");
}
Output
permissionsonly は偽に等しい。
SolutionVersion: 1.1.24.500
CatalogDescription: Catalog in Power Platform applications created by your company.
CanRead: True
CatalogName: Default Catalog Name
ImageLink:
CanSubmit: True
mspcat_GetPowerCatalogDetails
mspcat_GetPowerCatalogDetails によって返された情報を使用して、送信ドキュメントを入力し、このカタログでカタログ アイテムと発行元を参照するためのラベルを設定します。
この関数は、エンコードされた文字列を含む単一の CatalogDetails 文字列プロパティを持つオブジェクトを返します。 デコードされると、文字列には次のプロパティを持つ JSON データが含まれます。
| 件名 | タイプ | プロパティ |
|---|---|---|
catalogId |
文字列 | カタログの一意 ID |
isSuccess |
文字列 | 内部でのみ使用します。 |
sourceOptions |
オプション配列 |
mspcat_certificationrequest_requestsource グローバル選択からのオプション。 |
categoryOptions |
オプション配列 |
mspcat_catalogbusinesscategory グローバル選択からのオプション。 |
publisherLocalizedDisplayName |
文字列 | カタログ発行元のローカライズされた名前。 |
catalogItemLocalizedDisplayName |
文字列 | カタログ アイテムを参照するために使用されるローカライズされた名前。 |
次の GetPowerCatalogDetailsExample 静的メソッドは、mspcat_GetPowerCatalogDetailsRequest コマンドによって mspcat_GetPowerCatalogDetailsResponse メッセージ用に生成された mspcat_GetPowerCatalogDetails および クラスを使用してデータを取得します。
/// <summary>
/// Outputs details of the catalog in Power Platform.
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void GetPowerCatalogDetailsExample(IOrganizationService service) {
var request = new mspcat_GetPowerCatalogDetailsRequest();
var response = (mspcat_GetPowerCatalogDetailsResponse)service.Execute(request);
JsonDocument catalogDetails = JsonDocument.Parse(response.CatalogDetails);
string catalogId = catalogDetails.RootElement.GetProperty("catalogId").GetString();
bool isSuccess = catalogDetails.RootElement.GetProperty("isSuccess").GetBoolean();
JsonElement sourceOptions = catalogDetails.RootElement.GetProperty("sourceOptions");
JsonElement categoryOptions = catalogDetails.RootElement.GetProperty("categoryOptions");
string publisherLocalizedDisplayName = catalogDetails.RootElement.GetProperty("publisherLocalizedDisplayName").GetString();
string catalogItemLocalizedDisplayName = catalogDetails.RootElement.GetProperty("catalogItemLocalizedDisplayName").GetString();
Console.WriteLine($"catalogId: {catalogId}");
Console.WriteLine($"isSuccess: {isSuccess}");
Console.WriteLine("sourceOptions:");
foreach (JsonElement element in sourceOptions.EnumerateArray())
{
int id = element.GetProperty("id").GetInt32();
string label = element.GetProperty("userLocalziedLabel").GetString();
Console.WriteLine($" {id} {label}");
}
Console.WriteLine("categoryOptions:");
foreach (JsonElement element in categoryOptions.EnumerateArray())
{
int id = element.GetProperty("id").GetInt32();
string label = element.GetProperty("userLocalziedLabel").GetString();
Console.WriteLine($" {id} {label}");
}
Console.WriteLine($"publisherLocalizedDisplayName: {publisherLocalizedDisplayName}");
Console.WriteLine($"catalogItemLocalizedDisplayName: {catalogItemLocalizedDisplayName}");
}
Output
静的な GetPowerCatalogDetailsExample メソッドは、コンソールに次のように書き込みます:
catalogId: 883278f5-07af-45eb-a0bc-3fea67caa544
isSuccess: True
sourceOptions:
526430000 Other
526430001 Power Automate Maker Portal
526430002 Power Platform Maker Portal
526430003 Power Virtual Agents Maker Portal
526430004 Power Platform Admin API
526430005 PAC CLI
526430006 PAC Build Task
526430007 Pipelines in Power Platform
categoryOptions:
526430000 Customer Service
526430001 Project Management
526430002 Calendar Management & Scheduling
526430003 Email Management
526430004 Files & Documentation
526430005 Notification & Reminders
526430006 Analytics
526430007 Collaboration
526430008 Commerce
526430009 Finance
526430010 Compliance & Legal
526430011 Sales
526430012 IT Tools
526430013 Marketing
526430014 Operations & Supply Chain
526430015 Internet of Things
526430016 AI Machine Learning
526430017 Geolocation
526430018 Human Resources
publisherLocalizedDisplayName: Catalog Publisher
catalogItemLocalizedDisplayName: Catalog Item
カタログでアイテムを表示する
PAC CLI を使用するか、カタログ品目 (mspcat_applications) テーブルにクエリを実行することで、カタログの品目を検出できます。
PAC CLI の使用
カタログ内のアイテムを表示するには、pac category list コマンドを使用します。
pac catalog list
Connected to... TestCatalog
Connected as user@domain
Listing all published catalog items from the current Dataverse Organization...
Catalog Item Name Publisher Name Catalog Item Id Revision Id Version Status
Contoso Conference Custom Connector Catalog Conferences Team ContosoConferencesCustomConnector 4e882dd6-74f3-ed11-8849-000d3a0a286b 1.0.0.1 Published
Contoso Themed Components ContosoPublisher ContosoThemedComponents efbc469d-f1b2-ed11-83fd-000d3a0a2d9d 1.0.0.1 Published
また、これらのパラメーターを使用して、返されたレコードをフィルターすることもできます。
| パラメータ | エイリアス | プロパティ |
|---|---|---|
--catalog-item-id |
-cid |
検索するカタログ品目 ID。 カタログ アイテム ID を使用する場合、--catalog-item-name パラメーター 値はすべて無視されます。 |
--catalog-item-name |
-n |
検索する Catalog 品目名です。 |
--include-active |
-ia |
アクティブな品目を含めます。 |
--json パラメータを使用して JSON データを返すようにします。
--environment (-env) パラメーター を使用して、別の環境のカタログを照会します。
Dataverse テーブルをクエリする
カタログ品目に関する情報はカタログ品目 (mspcat_applications) テーブルにあるため、他の Dataverse テーブルと同様にそこからデータを取得できます。
次の静的 RetrieveCatalogItems 算出方法は、カタログ アイテム (mspcat_applications) と パッケージ (mspcat_packages) テーブルからカタログ内のアイテムに関するデータ テーブルを取得して出力します。 この関数は、コンソール アプリケーションでテーブルをレンダリングするために ConsoleTables NuGet パッケージに依存しています。
/// <summary>
/// Retrieves information about catalog items and writes it to the console
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void RetrieveCatalogItems(IOrganizationService service)
{
QueryExpression query = new("mspcat_applications")
{
ColumnSet = new ColumnSet(
"mspcat_tpsid",
"mspcat_deploytype",
"mspcat_applicationtype",
"mspcat_businesscategory",
"mspcat_description",
"mspcat_applicationsid",
"mspcat_publisherid",
"mspcat_name",
"statuscode"),
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions = {
{
new ConditionExpression(
attributeName: "statecode",
conditionOperator: ConditionOperator.Equal,
value: 0)
}
}
}
};
LinkEntity linkToPackages = query.AddLink(
linkToEntityName: "mspcat_packages",
linkFromAttributeName: "mspcat_packageasset",
linkToAttributeName: "mspcat_packagesid",
joinOperator: JoinOperator.Inner);
linkToPackages.Columns = new ColumnSet(
"statecode",
"mspcat_uniquename",
"mspcat_version",
"statuscode");
linkToPackages.EntityAlias = "pkg";
EntityCollection catalogs = service.RetrieveMultiple(query);
var table = new ConsoleTables.ConsoleTable(
"Catalog Item Name",
"Publisher Name",
"Catalog Item ID",
"Revision ID",
"Version",
"Status");
foreach (Entity catalog in catalogs.Entities)
{
string catalogItemName = catalog.GetAttributeValue<string>("mspcat_name");
string publisherName = catalog.FormattedValues["mspcat_publisherid"];
string catalogItemId = catalog.GetAttributeValue<string>("mspcat_tpsid");
Guid revisionId = catalog.GetAttributeValue<Guid>("mspcat_applicationsid");
string version = (string)catalog.GetAttributeValue<AliasedValue>("pkg.mspcat_version").Value;
string status = catalog.FormattedValues["statuscode"];
string[] rowData = {
catalogItemName,
publisherName,
catalogItemId,
revisionId.ToString(),
version,
status
};
table.Rows.Add(rowData);
}
table.Write();
}
この例の出力は次のようになります。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Catalog Item Name | Publisher Name | Catalog Item ID | Revision ID | Version | Status |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Contoso Conference Custom Connector| Catalog Conferences Team| ContosoConferencesCustomConnector | 4e882dd6-74f3-ed11-8849-000d3a0a286b | 1.0.0.1 | Published |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Contoso Themed Components | ContosoPublisher | ContosoThemedComponents | efbc469d-f1b2-ed11-83fd-000d3a0a2d9d | 1.0.0.1 | Published |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------