Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Power Platform API kan användas för att extrahera olika detaljer och metadata från Microsoft Power Platform miljöer med eller utan en Microsoft Dataverse databas. API används internt av olika klienter som är tillgängliga i dag, till exempel PowerShell.
I den här självstudien lär du dig att:
- Skapa ett Power Automate eller Logic Apps arbetsflöde (Azure) eller PowerShell-skript (Logic Apps) som autentiseras med Power Platform API.
- Anropa listmiljöerna om slutpunkt hämta din Microsoft Power Platform-miljöinformationen.
- Bläddra igenom kapacitetsobjektet och hämta den faktiska åtgången.
- Spara dina användningsdata i en tabell för visning.
Som ett exempel på detta scenario vill en kund ta hand om sin kapacitetsanvändning så att de förstår hur deras totala kapacitet i klientorganisationen fördelas efter avdelning. Detta hjälper kunden att utföra vissa interna kostnadsredovisningsfunktioner och chargebacks baserat på hur mycket varje avdelning förbrukar av den totala tillgängliga kapaciteten. Den här kunden använder miljöbeskrivningen och anropar den avdelning som äger varje miljö.
Anslutning och konfiguration med variabel
Använd följande information om hur du ansluter till programmatiskt Power Platform . Du kan välja mellan en Azure-upplevelse eller PowerShell skript.
Skapa arbetsflödet och konfigurera variablerna
Till att börja med använder vi i den här handledningen ett Logic Apps arbetsflöde. Ett Power Automate flöde kan också accepteras, och alla andra flöden som ditt företag föredrar att använda som automatisering. Alla anrop för att hämta data använder RESTful-API:er, så alla verktyg som stöder REST fungerar med den här självstudien.
Besök Azure-portalen och skapa sedan en ny logikapp och ge den ett namn:
När etableringen är klar redigerar du arbetsflödet med hjälp av Designer och ställer in en återkommande utlösare som ska köras dagligen:
Därefter måste vi initiera fem variabler:
- SPN-Id – Det här är ditt klient-ID för tjänstens huvudnamn. Den används senare för att utföra autentiseringen i en kontext för tjänstens huvudnamn. Om du använder användarnamn/lösenordskontext kan du hoppa över denna variabel.
- DBCapacity – Detta är en floatvariabel för den förbrukade databaskapaciteten i megabyte.
- FileCapacity – Detta är en floatvariabel för den förbrukade filkapaciteten i megabyte.
- LogCapacity – Detta är en floatvariabel för den förbrukade loggkapaciteten i megabyte.
- SimplifiedEnvironmentArray-Init – Det här är en arrayvariabel som vi fyller i med några miljöegenskaper. Detta förenklar den slutliga HTML-tabellens rapportutdata.
Därefter autentiserar vi med Microsoft Entra och hämtar en token för att anropa API:et Power Platform . Om du inte har slutfört installationen går Microsoft Entra du till Autentisering – äldre.
I den här självstudien använder vi ett nyckel vault för att lagra tjänstens huvudvärde. På så sätt kan en IT-Administratör göra det här värdet säkert tillgängligt för arbetsflödet. Detta fylls sedan i i POST-anropet för att Microsoft Entra hämta token.
Sedan parsar vi Microsoft Entra tokensvaret i ett typat objekt med hjälp av det här JSON-schemat i åtgärden Parse JSON:
{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"ext_expires_in": {
"type": "integer"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}
Hämta miljöer
I det här avsnittet hämtar vi den miljölista som du administrerar. Det kan du göra via API och PowerShell.
Anropa listmiljöerna slutpunkt
Det är dags att anropa Power Platform API:et. Använd slutpunkt List Environments för att hämta alla våra miljöer och deras metadata, särskilt med $expand parameter för kapacitet. Detta använder också autentiseringshuvudet med ägartoken som vi fick i det föregående avsnittet från Microsoft Entra ID. Om du använde användarnamn/lösenordskontext kan du även ange ägartoken i det här steget också.
Sedan parsar Power Platform vi API-svaret till ett typifierat objekt med hjälp av det här JSON-schemat med åtgärden "Parsa 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"
}
Iterera genom kapacitetsobjektet
Det här är den mest komplexa delen av självstudien. Hit använder vi en loop inuti en loop för att iterera varje miljö i List Environment-svaret, och varje miljö har en matris med kapacitetsinformation som vi också itererar. På så sätt kan vi samla in nödvändig information för varje miljörad i vår kapacitetsrapporttabell.
För varje och parsning
Vi tar det här steget för steg. Först använder vi en For Each kontroll med hjälp av "värdet" för Parse-List-Response utdata:
Sedan parsar vi den här enskilda miljön till ett typifierat objekt med hjälp av det här JSON-schemat:
{
"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"
}
Därefter använder vi en annan For Each kontroll med hjälp av "capacity" för Parse-CurrentItem utdata. Sedan parsar vi detta till ett typifierat objekt med hjälp av det här JSON-schemat:
Nu kan vi använda växlingskontrollen på CapacityType-egenskapen från parsa-kapacitet-utgången. Detta är antingen värdet för "Databas", "Fil" eller "Logg". Under varje växlingsärende samlar du in den relaterade egenskapen actualConsumption i den relaterade variabeln. I följande fall ser du att vi samlar in databaskapacitet:
Som det sista steget i loopen För varje miljö kan vi nu samla in miljöinformationen för den här raden i rapporten. Använd följande JSON-schema med hjälp av Tillägg till matris variabelkontroll:
{
"properties": {
"actualConsumption": {
"type": "number"
},
"capacityType": {
"type": "string"
},
"capacityUnit": {
"type": "string"
},
"ratedConsumption": {
"type": "number"
},
"updatedOn": {
"type": "string"
}
},
"type": "object"
}
Skapa rapporttabell
Grattis, nu har du tagit dig till det enkla! Nu när vi har vår fullständiga och förenklade kapacitetsmatris för miljön kan vi visa den i tabellformat.
Använd HTML-tabellanslutaren
När vi kör logikprogrammet kan vi nu se utdata från HTML-tabellrapporten:
Rapporten kan eventuellt skickas med e-post till intressenter i det här exemplet för kostnadsberäkningssyften, eller också kan informationen sparas i en databas för ytterligare analys och historisk trending.