PowerShell и API Rest Power BI

#powershell #csv #powerbi #rest

Вопрос:

По сути, мне нужны результаты шлюзов rest API — получение пользователей источника данных, но сохранение идентификатора (в этом примере $Line.id из моего импортированного CSV-файла).

Конечным результатом должен быть файл CSV со следующими полями — идентификатор, адрес электронной почты, datasourceAccessRight, имя дисплея, идентификатор, тип принципала

Я новичок в PowerShell и удивлен, что зашел так далеко, но не могу понять этот последний момент.

Овации

 $webclient=New-Object System.Net.WebClient
$webclient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

$Dir = "C:pbi_pro_user_logs"

Login-PowerBI

$GateWayFile = Import-CSV -Path "C:pbi_pro_user_logsGateway_Detail.csv"
$Output = @()
foreach ($Line in $GateWayFile){
    $Item = $Line.id
    $url =  "https://api.powerbi.com/v1.0/myorg/gateways/HIDDEN/datasources/" $Item "/users"
    $Output  = (Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json)
}

$Result = $Output.value

$Result | Export-Csv $Dir"GateWay_users.csv" -NoTypeInformation
 

Комментарии:

1. Что именно у вас не работает? Похоже, вы уже получаете некоторые данные и сохраняете их в CSV, вам просто не хватает некоторых полей?

2. Таким образом, вышесказанное работает, но возвращает только результаты «Шлюзы — Получить пользователей источника данных». docs.microsoft.com/en-us/rest/api/power-bi/gateways/. … Я бы хотел, чтобы он сохранил используемый идентификатор источника данных, если это имеет смысл? При использовании этого API вы вводите идентификатор источника данных, чтобы получить список пользователей для этого источника данных, но идентификатор не является полем в результате. Я хотел бы видеть идентификатор в результате

Ответ №1:

Попробуйте сделать это, используя вычисляемое свойство из Select-Object :

 $GateWayFile = Import-CSV -Path "C:pbi_pro_user_logsGateway_Detail.csv"
$Output = Foreach ($Line in $GateWayFile){
    $url =  "https://api.powerbi.com/v1.0/myorg/gateways/HIDDEN/datasources/" $Line.id "/users"
    $Item = (Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json)

    # output all properties of the item, plus the ID:
    $ItemWithID = $Item | Select *,@{l='Id';e={$line.id}}
    Write-Output $ItemWithID
}

# This depends on how you want your csv structured, but for example:
$Result = $Output | Select Id,Value
 

Или, если Value это целый объект, который ID должен быть назначен внутри, измените строки выбора:

   $ItemWithID = $Item.Value | Select *,@{l='Id';e={$line.id}}
$Result = $Output
 

Комментарии:

1. Удивительно, спасибо, работает как заклинание 🙂