Я пытаюсь получить историю обновлений PowerBI через URL-адрес API через Powershell и экспортировать в CSV. Я мало знаю о Powershell, но я пытаюсь изучить его, поскольку он очень полезен в области бизнес-аналитики, где Я работаю, я попытался запустить код через этот сайт ПЛАНОВОЕ ОБНОВЛЕНИЕ POWERBI В ВАШЕЙ ОРГАНИЗАЦИИ , а также попытался отредактировать для извлечения, но безуспешно.
Скрипт сайта работает без ошибок но не возвращает никаких результатов в CSV, это потому, что URL-адрес неправильный?
Сценарий веб-сайта:
$myCred = Get-Credential
Connect-PowerBIServiceAccount -Credential $myCred
$Workspaces = Get-PowerBIWorkspace
$ExportFile = "D:\Users\F02579\Documents\PowerBIRefreshHistory.csv"
Remove-Item $ExportFile -Force -ErrorAction SilentlyContinue
foreach($workspace in $Workspaces)
{
$DataSets = Get-PowerBIDataset -WorkspaceId $workspace.Id | where {$_.isRefreshable -eq $true}
foreach($dataset in $DataSets)
{
$URI = "groups/" + $workspace.id + "/datasets/" + $dataset.id + "/refreshes"
#$OutFile = $ExportFolder + '\' + $workspace.Name + '-' + $dataset.Name + '.json'
$Results = Invoke-PowerBIRestMethod -Url $URI -Method Get | ConvertFrom-Json
foreach($result in $Results.value)
{
$errorDetails = $result.serviceExceptionJson | ConvertFrom-Json -ErrorAction SilentlyContinue
$row = New-Object psobject
$row | Add-Member -Name "Workspace" -Value $workspace.Name -MemberType NoteProperty
$row | Add-Member -Name "Dataset" -Value $dataset.Name -MemberType NoteProperty
$row | Add-Member -Name "refreshType" -Value $result.refreshType -MemberType NoteProperty
$row | Add-Member -Name "startTime" -Value $result.startTime -MemberType NoteProperty
$row | Add-Member -Name "endTime" -Value $result.endTime -MemberType NoteProperty
$row | Add-Member -Name "status" -Value $result.status -MemberType NoteProperty
$row | Add-Member -Name "errorCode" -Value $errorDetails.errorCode -MemberType NoteProperty
$row | Add-Member -Name "errorDescription" -Value $errorDetails.errorDescription -MemberType NoteProperty
$row | Export-Csv -Path $ExportFile -Append -Delimiter ';' -NoTypeInformation
}
}
}
Я пытался поместить URL-адрес, который Microsoft предоставляет в этой ссылке, но также безуспешно.
Мой сценарий:
Import-Module MicrosoftPowerBIMgmt.Admin
$myCred = Get-Credential
Connect-PowerBIServiceAccount -Credential $myCred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange `
-ConnectionUri https://outlook.office365.com/powershell-liveid/ `
-Credential $credential `
-Authentication Basic `
-AllowRedirection
Import-PSSession $Session
$Workspaces = Get-PowerBIWorkspace -Scope Organization -All
#Remove-Item $ExportFile -Force -ErrorAction SilentlyContinue
$DataSets =
ForEach ($workspace in $Workspaces)
{
Write-Host $workspace.Name
ForEach ($dataset in (Get-PowerBIDataset -Scope Organization -WorkspaceId $workspace.Id))
{
#$URI = "groups/" + $workspace.id + "/datasets/" + $dataset.id + "/refreshes"
$URI = "https://api.powerbi.com/v1.0/myorg/groups/" + $workspace.id + "/datasets/" + $dataset.id + "/refreshes"
#$OutFile = $ExportFolder + '\' + $workspace.Name + '-' + $dataset.Name + '.json'
$Results = Invoke-PowerBIRestMethod -Url $URI -Method Get | ConvertFrom-Json
foreach($result in $Results.value)
{
$errorDetails = $result.serviceExceptionJson | ConvertFrom-Json -ErrorAction SilentlyContinue
$ItemResult = New-Object System.Object
$ItemResult | Add-Member -type NoteProperty -name WorkspaceID -value $workspace.Id
$ItemResult | Add-Member -type NoteProperty -name DatasetID -value $dataset.Id
$ItemResult | Add-Member -type NoteProperty -name RefreshID -value $result.Id
$ItemResult | Add-Member -type NoteProperty -name RequestId -value $result.requestId
$ItemResult | Add-Member -type NoteProperty -name RefresheType -Value $result.refreshType
$ItemResult | Add-Member -type NoteProperty -name StartTime -Value $result.startTime
$ItemResult | Add-Member -type NoteProperty -name EndTime -Value $result.endTime
$ItemResult | Add-Member -type NoteProperty -name Status -Value $result.status
$ItemResult | Add-Member -type NoteProperty -name ErrorCode -Value $errorDetails.errorCode
$ItemResult | Add-Member -type NoteProperty -name ErrorDescription -Value $errorDetails.errorDescription
# Put the item result and append it to the result object
$Result +=$ItemResult
}
}
}
$DataSets | Export-Csv "D:\Users\F02579\Documents\PowerBIRefreshHistory.csv" -NoTypeInformation -Encoding UTF8
Remove-PSSession $Session
Disconnect-PowerBIServiceAccount
Ошибка в моем сценарии: