Dış aracı kaydetme

Bazı araçların Power BI Desktop'a el ile kaydedilmesi gerekir. Bir dış aracı kaydetmek için aşağıdaki örnek kodla bir JSON dosyası oluşturun:

{
    "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 dosyası aşağıdaki öğeleri içerir:

  • name: Araç için, Power BI Desktop'taki Dış Araçlar şeridinde başlık bir düğme olarak görünecek bir ad sağlayın.
  • description: (isteğe bağlı) Power BI Desktop'ta Dış Araçlar şerit düğmesinde araç ipucu olarak görünecek bir açıklama sağlayın.
  • path: Aracın yürütülebilir dosyasının tam yolunu belirtin.
  • arguments: (isteğe bağlı) Araç yürütülebilir dosyasının başlatılması gereken bir komut satırı bağımsız değişkenleri dizesi sağlayın. Aşağıdaki yer tutuculardan herhangi birini kullanabilirsiniz:
    • %server%: İçeri aktarılan/DirectQuery veri modelleri için Analysis Services Tablolu yerel örneğinin sunucu adı ve bağlantı noktası numarasıyla değiştirildi.
    • %database%: İçeri aktarılan/DirectQuery veri modelleri için Analysis Services Tablolu yerel örneğinde barındırılan modelin veritabanı adıyla değiştirildi.
  • iconData: Power BI Desktop'taki Dış Araçlar şeridinde düğme simgesi olarak işlenecek görüntü verilerini sağlayın. Dize, "data:" ön eki olmadan Veri URI'lerinin söz dizimine göre biçimlendirilmelidir.

Dosyayı "<tool name>.pbitool.json" adlandırın ve aşağıdaki klasöre yerleştirin:

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

64 bit ortamlar için dosyaları aşağıdaki klasöre yerleştirin:

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

.pbitool.json uzantısıyla belirtilen konumdaki dosyalar, başlangıçta Power BI Desktop tarafından yüklenir.

Örnek

Aşağıdaki *.pbitool.json dosyası Dış Araçlar şeridinden powershell.exe dosyasını başlatır ve pbiToolsDemo.ps1 adlı bir betik çalıştırır. Betik, -Server parametresindeki sunucu adını ve bağlantı noktası numarasını ve -Database parametresindeki anlam modeli adını geçirir.

{ 
    "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" 
} 

Karşılık gelen pbiToolsDemo.ps1 betiği, Sunucu ve Veritabanı parametrelerini konsola gönderir.

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

Simge veri URI'leri

Dış Araçlar şeridine bir simge eklemek için pbitool.json kayıt dosyasının bir iconData öğesi içermesi gerekir.

Screenshot of the external tools ribbon with the tool icons.

iconData öğesi, veri: ön eki olmadan bir veri URI'sini alır. Örneğin, bir piksellik bir eflatun png görüntüsünün veri URI'si şöyledir:

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

Önceki örnekte pbitool.json dosyasında gösterildiği gibi data: ön ekini kaldırdığınızdan emin olun.

.png veya başka bir görüntü dosyası türünü veri URI'sine dönüştürmek için çevrimiçi bir araç veya aşağıdaki C# kod parçacığında gösterilen gibi özel bir araç kullanın:

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