Inscrire un outil externe

Certains outils doivent être inscrits manuellement auprès de Power BI Desktop. Pour inscrire un outil externe, créez un fichier JSON avec l’exemple de code suivant :

{
    "name": "<tool name>",
    "description": "<tool description>",
    "path": "<tool executable path>",
    "arguments": "<optional command line arguments>",
    "iconData": "image/png;base64,<encoded png icon data>"
}

Le fichier pbitool.json inclut les éléments suivants :

  • name: donnez un nom à l’outil. Ce nom s’affichera sous la forme d’une légende de bouton dans le ruban Outils externes de Power BI Desktop.
  • description : (facultatif) fournissez une description, qui s’affichera sous la forme d’une info-bulle sur le bouton du ruban Outils externes dans Power BI Desktop.
  • path : indiquez le chemin complet du fichier exécutable de l’outil.
  • arguments : (facultatif) indiquez la chaîne d’arguments de ligne de commande avec laquelle le fichier exécutable de l’outil doit être lancé. Vous pouvez utiliser l’un des espaces réservés suivants :
    • %server% : à remplacer par le nom du serveur et le numéro de port de l’instance locale d’Analysis Services Tabular pour les modèles de données importés ou DirectQuery.
    • %database% : à remplacer par le nom de la base de données du modèle hébergé sur l’instance locale d’Analysis Services Tabular pour les modèles de données importés ou DirectQuery.
  • iconData : fournissez des données d’image qui seront affichées sous forme d’icône de bouton dans le ruban Outils externes de Power BI Desktop. La chaîne doit être mise en forme selon la syntaxe des URI de données, sans le préfixe « data: ».

Nommez le fichier "<tool name>.pbitool.json", puis placez-le dans le dossier suivant :

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

Dans les environnements 64 bits, placez les fichiers dans le dossier suivant :

  • Program Files (x86)\Common Files\Microsoft Shared\Power BI Desktop\External Tools

Les fichiers de cet emplacement spécifié avec l’extension .pbitool.json sont chargés par Power BI Desktop lors du démarrage.

Exemple

Le fichier *.pbitool.json suivant démarre powershell.exe à partir du ruban Outils externes et exécute un script appelé pbiToolsDemo.ps1. Le script transmet le nom du serveur et le numéro de port dans le paramètre -Server, et le nom du modèle sémantique dans le paramètre -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" 
} 

Le script de pbiToolsDemo.ps1 correspondant affiche les paramètres du serveur et de la base de données sur la console.

[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.

URI de données d’icône

Pour inclure une icône dans le ruban Outils externes, le fichier d’inscription pbitool.json doit inclure un élément iconData.

Screenshot of the external tools ribbon with the tool icons.

L’élément iconData prend un URI de données sans le préfixe données : . Par exemple, l’URI de données d’une image png magenta d’une pixel est :

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

Veillez à supprimer le préfixe données :, comme indiqué dans l’exemple pbitool.json précédent.

Pour convertir un fichier .png ou un autre type de fichier image en un URI de données, utilisez un outil en ligne ou un outil personnalisé comme celui illustré dans l’extrait de contenu C# suivant :

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