Scanner API 使用 PowerShell 调用多个 PowerBI 工作区
Scanner API Call using PowerShell for multiple PowerBI workspaces
我正在尝试使用 PowerShell 调用 PowerBI GETinfo 扫描程序 API。其中一项要求是传递多个工作区以获取信息。这是 MS 文档 link :\
https://docs.microsoft.com/en-us/rest/api/power-bi/admin/workspace-info-post-workspace-info#example
但是,我无法在 PowerShell 中为 API 正文传递以下语法。
以下在 API 主体中调用多个工作区的语法不起作用:
$auth_body =@{
"workspaces": [
"97d03602-4873-4760-b37e-1563ef5358e3",
"67b7e93a-3fb3-493c-9e41-2c5051008f24"
]
}
我只能通过单个工作区和以下语法:
$auth_body =@{'workspaces' ="3b7e9b1c-bdac-4e46-a39d-1b3d24a0e122"}
请帮助我形成多个工作区的语法。似乎我无法在 PowerShell 中为多个工作区形成键值对
应用 MathiasR.Jessen 建议后更新了代码:
$authority = 'https://login.microsoftonline.com/oauth2/'+ $tenantID
$authResult = Get-AdalToken -Authority $authority -Resource $resourceAppIdURI -ClientID $UId -Clientsecret $password -TenantID $tenantID
$Token=$authResult.AccessToken
#Write-Output "Token: $Token"
$auth_header = @{
'Accept' = "application/json";
'Authorization' = 'Bearer ' +$Token
}
$auth_body = @{
"workspaces" =
@("50c4bd8e-fc75-433e-a0cd-755f9329515e","97d03602-4873-4760-b37e-1563ef5358e3")
}
$uri = "https://api.powerbi.com/v1.0/myorg/admin/workspaces/getInfo"
$all_workspace = (Invoke-RestMethod -Uri $uri –Headers $auth_header -Body $auth_body –Method Post)
和错误消息:
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
+ ... rkspace1 = (Invoke-RestMethod -Uri $uri –Headers $auth_header -Body $ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
但是,如果我提供单个工作区,它会完美地工作。
您正在混合使用 PowerShell 和 JSON 语法。
要在 PowerShell 中定义数组,请使用 @()
数组子表达式运算符:
$auth_body = @{
"workspaces" = @(
"97d03602-4873-4760-b37e-1563ef5358e3",
"67b7e93a-3fb3-493c-9e41-2c5051008f24"
)
}
我正在尝试使用 PowerShell 调用 PowerBI GETinfo 扫描程序 API。其中一项要求是传递多个工作区以获取信息。这是 MS 文档 link :\
https://docs.microsoft.com/en-us/rest/api/power-bi/admin/workspace-info-post-workspace-info#example
但是,我无法在 PowerShell 中为 API 正文传递以下语法。 以下在 API 主体中调用多个工作区的语法不起作用:
$auth_body =@{
"workspaces": [
"97d03602-4873-4760-b37e-1563ef5358e3",
"67b7e93a-3fb3-493c-9e41-2c5051008f24"
]
}
我只能通过单个工作区和以下语法:
$auth_body =@{'workspaces' ="3b7e9b1c-bdac-4e46-a39d-1b3d24a0e122"}
请帮助我形成多个工作区的语法。似乎我无法在 PowerShell 中为多个工作区形成键值对
应用 MathiasR.Jessen 建议后更新了代码:
$authority = 'https://login.microsoftonline.com/oauth2/'+ $tenantID
$authResult = Get-AdalToken -Authority $authority -Resource $resourceAppIdURI -ClientID $UId -Clientsecret $password -TenantID $tenantID
$Token=$authResult.AccessToken
#Write-Output "Token: $Token"
$auth_header = @{
'Accept' = "application/json";
'Authorization' = 'Bearer ' +$Token
}
$auth_body = @{
"workspaces" =
@("50c4bd8e-fc75-433e-a0cd-755f9329515e","97d03602-4873-4760-b37e-1563ef5358e3")
}
$uri = "https://api.powerbi.com/v1.0/myorg/admin/workspaces/getInfo"
$all_workspace = (Invoke-RestMethod -Uri $uri –Headers $auth_header -Body $auth_body –Method Post)
和错误消息:
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
+ ... rkspace1 = (Invoke-RestMethod -Uri $uri –Headers $auth_header -Body $ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
但是,如果我提供单个工作区,它会完美地工作。
您正在混合使用 PowerShell 和 JSON 语法。
要在 PowerShell 中定义数组,请使用 @()
数组子表达式运算符:
$auth_body = @{
"workspaces" = @(
"97d03602-4873-4760-b37e-1563ef5358e3",
"67b7e93a-3fb3-493c-9e41-2c5051008f24"
)
}