Del via


Registrer et eksternt værktøj

Nogle værktøjer skal registreres manuelt i Power BI Desktop. Hvis du vil registrere et eksternt værktøj, skal du oprette 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>"
}

Filen pbitool.json indeholder følgende elementer:

  • name: Angiv et navn til værktøjet, der vises som en knaptekst på båndet Eksterne værktøjer i Power BI Desktop.
  • description: (valgfrit) Angiv en beskrivelse, der vises som et værktøjstip på båndknappen Eksterne værktøjer i Power BI Desktop.
  • path: Angiv den fuldt kvalificerede sti til værktøjets eksekverbare fil.
  • argumenter: (valgfrit) Angiv en streng af kommandolinjeargumenter, som værktøjets eksekverbare fil skal startes med. Du kan bruge en af følgende pladsholdere:
    • %server%: Erstattet med servernavnet og portnummeret for den lokale forekomst af Analysis Services-tabel for importerede/DirectQuery-datamodeller.
    • %database%: Erstattet med databasenavnet på den model, der hostes i den lokale forekomst af Analysis Services-tabel for importerede/DirectQuery-datamodeller.
  • iconData: Angiv billeddata, der gengives som et knapikon på båndet Eksterne værktøjer i Power BI Desktop. Strengen skal formateres i henhold til syntaksen for Data-URI'er uden præfikset "data:".

Navngiv filen "<tool name>.pbitool.json" , og placer den i følgende mappe:

  • %commonprogramfiles%\Microsoft Shared\Power BI Desktop\External Tools

I 64-bit miljøer skal du placere filerne i følgende mappe:

  • Programfiler (x86)\Fælles filer\Microsoft Shared\Power BI Desktop\Eksterne værktøjer

Filer på den angivne placering med filtypenavnet .pbitool.json indlæses af Power BI Desktop ved start.

Eksempel

Følgende *.pbitool.json-fil starter powershell.exe fra båndet Eksterne værktøjer og kører et script med navnet pbiToolsDemo.ps1. Scriptet overfører servernavnet og portnummeret i parameteren -Server og det semantiske modelnavn 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 script pbiToolsDemo.ps1 sender parametrene Server og Database 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'  

Screenshot of PowerShell console output created from the example external tool.

Ikondata-URI'er

Hvis du vil medtage et ikon på båndet Eksterne værktøjer, skal registreringsfilen pbitool.json indeholde et iconData-element.

Screenshot of the external tools ribbon with the tool icons.

IkonetData-elementet tager en data-URI uden præfikset data. Data-URI'en for et magenta png-billede på én pixel er f.eks.:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAANSURBVBhXY/jH9+8/AAciAwpql7QkAAAAAElFTkSuQmCC

Sørg for at fjerne dataene: præfiks, som vist i det foregående eksempel pbitool.json.

Hvis du vil konvertere en .png-fil eller en anden billedfiltype til en data-URI, skal du bruge et onlineværktøj eller et brugerdefineret værktøj, f.eks. det, der vises i følgende C#-kodestykke:

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(); 
}