Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Power Platform-API-en kan brukes til å trekke ut ulike detaljer og metadata fra Microsoft Power Platform-miljøene med eller uten en Microsoft Dataverse-database. API-en brukes internt av ulike klienter som er tilgjengelige i dag, for eksempel PowerShell.
I denne opplæringen lærer du hvordan du kan gjøre følgende:
- Opprett en Power Automate- eller Logic Apps-arbeidsflyt (Azure) eller et PowerShell-skript som autentiserer med Power Platform-API-en.
- Kall opp listemiljøenes endepunkt for å hente Microsoft Power Platform-miljødetaljene.
- Gå gjennom kapasitetsobjektet for å hente det faktiske forbruket.
- Lagre forbruksdataene i en tabell for visning.
Som et eksempel på dette scenarioet er en kunde ute etter å få oversikt over kapasitetsbruken, slik at de bedre kan forstå tildeling av total leierkapasitet etter avdeling. Dette hjelper kunden med å utføre noen interne kostnadsregnskapsfunksjoner og tilbakeføringer basert på hvor mye hver avdeling bruker av den totale tilgjengelige kapasiteten. Denne kunden bruker miljøbeskrivelsen for avdelingen som eier hvert miljø.
Konfigurasjon av forbindelse og variabel
Bruk følgende detaljer for å koble til Power Platform programmatisk. Du kan velge mellom en Azure eller PowerShell skript.
Opprette arbeidsflyten og konfigurere variablene
Til å begynne med bruker vi i denne opplæringen en Logic Apps arbeidsflyt. En Power Automate-flyt er også akseptabel, i tillegg til eventuelle andre iverksettingsmotorer selskapet foretrekker å bruke til automatisering. Alle kallene for å hente dataene bruker RESTful APIer, så alle verktøy som støtter REST fungerer med denne opplæringen.
Gå til Azure-portalen, og opprett deretter en ny logikkapp og gi den et navn:
Når klargjøringen er fullført, redigerer du arbeidsflyten ved hjelp av utformingsverktøyet og konfigurerer en gjentakelsesutløser til å kjøre daglig:
Deretter må vi initialisere fem variabler:
- SPN-ID – Dette er klient-ID-en for tjenestekontohaveren. Den brukes senere til å utføre godkjenningen i en tjenestekontohaverkontekst. Hvis du bruker en kontekst med brukernavn/passord, kan du hoppe over denne variabelen.
- DBCapacity – Dette er en Float-variabel for den forbrukte databasekapasiteten i megabyte.
- FileCapacity – Dette er en Float-variabel for den forbrukte filkapasiteten i megabyte.
- LogCapacity – Dette er en flytvariabel for den forbrukte loggkapasiteten i megabyte.
- SimplifiedEnvironmentArray-Init – Dette er en matrisevariabel som vi fyller ut med noen få miljøegenskaper. Dette fører til en drastisk forenkling av de endelige utdataene i HTML-tabellrapporten.
Deretter godkjenner vi med Microsoft Entra og henter et token for å kalle API-en Power Platform . Hvis du ikke har fullført konfigurasjonen av Microsoft Entra, kan du se Autentisering – eldre.
I denne opplæringen bruker vi et nøkkelhvelv til å lagre den hemmelige verdien for tjenestekontohaveren. På denne måten kan en IT-administrator gjøre denne verdien tilgjengelig for arbeidsflyten på en trygg måte. Dette fylles deretter ut i POST-kallet til for Microsoft Entra å hente tokenet.
Vi analyserer deretter Microsoft Entra-tokensvaret til et typet objekt ved hjelp av dette JSON-skjemaet i handlingen Analyser JSON:
{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"ext_expires_in": {
"type": "integer"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}
Hente miljøer
I denne delen henter vi miljølisten du administrerer. Dette kan gjøres både via API og PowerShell.
Kalle opp endepunktet for visning av miljøer
Nå er det på tide å kalle opp Power Platform-API-en. Bruk endepunkt Listemiljøer til å hente alle miljøene våre og metadataene deres, spesielt med $expand-parameteren for kapasitet. Dette bruker også autorisasjonshodet med bærerpolletten vi mottok i forrige del fra Microsoft Entra ID. Hvis du brukte konteksten for brukernavn/passord, kan du også angi dette bæretokenet på dette trinnet også.
Deretter analyserer vi API-svaret Power Platform i et skrevet objekt ved hjelp av dette JSON-skjemaet med handlingen «Analyser JSON»:
{
"properties": {
"value": {
"items": {
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"category": {
"type": "string"
},
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "number"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"platformSku": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"id",
"type",
"location",
"name",
"properties"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
Gå gjennom Kapasitet-objektet
Dette er den mest komplekse delen av opplæringen. Her bruker vi en løkke i en løkke til å iterere hvert miljø i Listemiljø-svaret, og hvert miljø har en rekke kapasitetsdetaljer som vi også itererer. Dette gjør det mulig for oss å registrere nødvendig informasjon for hver miljørad i kapasitetsrapporttabellen.
For each og analyse
La oss gå trinnvis gjennom dette. Først bruker vi en For Each-kontroll ved å bruke 'verdien' til Parse-List-Response-utdataene:
Deretter analyserer vi dette ene miljøet til et typet objekt ved hjelp av dette JSON-skjemaet:
{
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"location": {
"type": "string"
},
"name": {
"type": "string"
},
"properties": {
"properties": {
"addons": {
"type": "array"
},
"azureRegion": {
"type": "string"
},
"capacity": {
"items": {
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"required": [
"capacityType",
"actualConsumption",
"ratedConsumption",
"capacityUnit",
"updatedOn"
],
"type": "object"
},
"type": "array"
},
"clientUris": {
"properties": {
"admin": {
"type": "string"
},
"maker": {
"type": "string"
}
},
"type": "object"
},
"cluster": {
"properties": {
"number": {
"type": "string"
}
},
"type": "object"
},
"connectedGroups": {
"type": "array"
},
"createdBy": {
"properties": {
"displayName": {
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"type": "string"
}
},
"type": "object"
},
"createdTime": {
"type": "string"
},
"creationType": {
"type": "string"
},
"databaseType": {
"type": "string"
},
"displayName": {
"type": "string"
},
"environmentSku": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"linkedEnvironmentMetadata": {
"properties": {
"backgroundOperationsState": {
"type": "string"
},
"baseLanguage": {
"type": "integer"
},
"createdTime": {
"type": "string"
},
"domainName": {
"type": "string"
},
"friendlyName": {
"type": "string"
},
"instanceApiUrl": {
"type": "string"
},
"instanceState": {
"type": "string"
},
"instanceUrl": {
"type": "string"
},
"resourceId": {
"type": "string"
},
"scaleGroup": {
"type": "string"
},
"uniqueName": {
"type": "string"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"protectionStatus": {
"properties": {
"keyManagedBy": {
"type": "string"
}
},
"type": "object"
},
"provisioningState": {
"type": "string"
},
"retentionDetails": {
"properties": {
"backupsAvailableFromDateTime": {
"type": "string"
},
"retentionPeriod": {
"type": "string"
}
},
"type": "object"
},
"retentionPeriod": {
"type": "string"
},
"runtimeEndpoints": {
"properties": {
"microsoft.ApiManagement": {
"type": "string"
},
"microsoft.BusinessAppPlatform": {
"type": "string"
},
"microsoft.CommonDataModel": {
"type": "string"
},
"microsoft.Flow": {
"type": "string"
},
"microsoft.PowerApps": {
"type": "string"
},
"microsoft.PowerAppsAdvisor": {
"type": "string"
}
},
"type": "object"
},
"states": {
"properties": {
"management": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
},
"runtime": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"updateCadence": {
"properties": {
"id": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"type": {
"type": "string"
}
},
"type": "object"
}
Deretter bruker vi en annen For Each-kontroll ved å bruke 'kapasiteten' til Parse-CurrentItem-utgangen. Deretter analyserer vi dette til et skrevet objekt ved hjelp av dette JSON-skjemaet:
Nå kan vi bruke Switch-kontrollen på CapacityType-egenskapen fra Parse-Capacity-utdataene. Dette er enten verdien av 'Database', 'Fil' eller 'Logg'. Under hver enkelt Switch-sak henter du den relaterte egenskapen 'actualConsumption' til den relaterte variabelen. I følgende tilfelle ser du at vi registrerer databasekapasitet:
Som det siste trinnet i sløyfen "For hvert miljø" kan vi nå fange opp miljødetaljene for denne raden i rapporten. Bruk følgende JSON-skjema ved hjelp av kontrollelementet Tilføy i matrisevariabel:
{
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"type": "object"
}
Opprette rapporttabell
Gratulerer, du har nå kommet til den enkle delen! Nå som vi har en fullstendig utfylt og forenklet miljøkapasitetsmatrise, kan vi vise den i tabellformat.
Bruke HTML-tabellkoblingen
Når logikkappen kjøres, kan vi nå se utdataene fra HTML-tabellrapporten:
Rapporten kan eventuelt sendes via e-post til interessenter, i dette eksemplet med henblikk på kostnadsregnskap, eller dataene kan lagres i en database for videre analyse og historisk trend.