Registrere et eksternt verktøy
Noen verktøy må registreres manuelt med Power BI Desktop. Hvis du vil registrere et eksternt verktøy, oppretter du en JSON-fil med følgende eksempelkode:
{
"name": "<tool name>",
"description": "<tool description>",
"path": "<tool executable path>",
"arguments": "<optional command line arguments>",
"iconData": "image/png;base64,<encoded png icon data>"
}
Pbitool.json-filen inneholder følgende elementer:
- navn: Angi et navn på verktøyet, som vises som en knappetekst på båndet Eksterne verktøy i Power BI Desktop.
- beskrivelse: (valgfritt) Oppgi en beskrivelse, som vises som et verktøytips på båndet For eksterne verktøy i Power BI Desktop.
- bane: Angi den fullstendige banen til den kjørbare verktøyet.
- argumenter: (valgfritt) Angi en streng med kommandolinjeargumenter som kjørbare verktøy skal startes med. Du kan bruke en av følgende plassholdere:
- %server%: Erstattet med servernavnet og portnummeret for den lokale forekomsten av Analysis Services-tabell for importerte/DirectQuery-datamodeller.
- %database%: Erstattet med databasenavnet for modellen som driftes i den lokale forekomsten av Analysis Services Tabular for importerte/DirectQuery-datamodeller.
- iconData: Oppgi bildedata, som gjengis som et knappeikon på båndet Eksterne verktøy i Power BI Desktop. Strengen skal formateres i henhold til syntaksen for data-URIer uten «data:»-prefikset.
Gi filen "<tool name>.pbitool.json"
et navn, og plasser den i følgende mappe:
%commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools
Plasser filene i følgende mappe for 64-biters miljøer:
- Programfiler (x86)\Common Files\Microsoft Shared\Power BI Desktop\Eksterne verktøy
Filer på den angitte plasseringen med filtypen PBITOOL.json lastes inn av Power BI Desktop ved oppstart.
Eksempel
Følgende *.pbitool.json-fil starter powershell.exe fra båndet Eksterne verktøy og kjører et skript kalt pbiToolsDemo.ps1. Skriptet sender servernavnet og portnummeret i -Server-parameteren og semantisk modellnavn i parameteren -Database.
{
"version": "1.0.0",
"name": "External Tools Demo",
"description": "Launches PowerShell and runs a script that outputs server and database parameters. (Requires elevated PowerShell permissions.)",
"path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"arguments": "C:\\pbiToolsDemo.ps1 -Server \"%server%\" -Database \"%database%\"",
"iconData": "image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC"
}
Det tilsvarende pbiToolsDemo.ps1-skriptet sender server- og databaseparameterne til konsollen.
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[string] $Server,
[Parameter(Mandatory = $true)]
[string] $Database
)
Write-Host ""
Write-Host "Analysis Services instance: " -NoNewline
Write-Host "$Server" -ForegroundColor Yellow
Write-Host "Dataset name: " -NoNewline
Write-Host "$Database" -ForegroundColor Green
Write-Host ""
Read-Host -Prompt 'Press [Enter] to close this window'
URL-er for ikondata
Hvis du vil inkludere et ikon på båndet Eksterne verktøy, må registreringsfilen pbitool.json inneholde et iconData-element.
IconData-elementet tar en data-URI uten dataene: prefiks. Data-URI-en for et png-bilde med én piksel er for eksempel:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC
Pass på å fjerne dataene: prefiks, som vist i eksemplet pbitool.json foran.
Hvis du vil konvertere en PNG-fil eller en annen bildefiltype til en data-URI, bruker du et nettbasert verktøy eller et egendefinert verktøy, for eksempel det som vises i følgende C#-kodesnutt:
string ImageDataUri;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "PNG Files (.png)|*.png|All Files (*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Multiselect = false;
openFileDialog1.CheckFileExists = true;
bool? userClickedOK = openFileDialog1.ShowDialog();
if (userClickedOK == true)
{
var fileName = openFileDialog1.FileName;
var sb = new StringBuilder();
sb.Append("image/")
.Append((System.IO.Path.GetExtension(fileName) ?? "png").Replace(".", ""))
.Append(";base64,")
.Append(Convert.ToBase64String(File.ReadAllBytes(fileName)));
ImageDataUri = sb.ToString();
}