Intentando usar Rest API para actualizar la fuente de datos de Power BI a través de PowerShell y Gateway

Un usuario Pregunto ✅

katiec

Hola a todos,

Estoy tratando de usar el código de ejemplo publicado aquí para actualizar mis fuentes de datos en Power BI a través de una puerta de enlace establecida a través de la API de descanso. Puedo copiar y pegar el código en la ventana de solicitud de PowerShell y funciona, pero cuando intento ejecutarlo como un script, no funciona. Incluso cuando sé que están instaladas las bibliotecas adecuadas, sigo recibiendo el error:

Invoke-RestMethod: no se puede encontrar un parámetro posicional que acepte el argumento ‘†Headers
System.Collections.Hashtable ‘Método’.
En \BN-NDIBISRVR01SharedPowerBI_Powershell_ScriptUpdated_Powershell_Script.ps1:119 char:1
+ Invoke-RestMethod -Uri $uri – Encabezados $authHeader – Método POST – …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: Argumento no válido: (:) [Invoke-RestMethod], excepción de enlace de parámetro
+ Id. de error totalmente calificado: PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Agradezco cualquier ayuda que pueda proporcionar! Incluí mi código a continuación, pero eliminé la ID del conjunto de datos y la ID del cliente.

Set-ExecutionPolicy RemoteSigned

Import-Module AzureRM


$groupID = "me" # the ID of the group that hosts the dataset. Use "me" if this is your My Workspace

$datasetID = "730"
$clientId = "10" 

function GetAuthToken
{
       $adal = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.IdentityModel.Clients.ActiveDirectory.dll"
 
       $adalforms = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll"
 
       [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
 
       [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null
 
       $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
 
       $resourceAppIdURI = "https://analysis.windows.net/powerbi/api"
 
       $authority = "https://login.microsoftonline.com/common/oauth2/authorize";
 
       $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
 
       $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId, $redirectUri, "Auto")
 
       return $authResult
}

# Get the auth token from AAD
$token = GetAuthToken

# Building Rest API header with authorization token
$authHeader = @{
   'Content-Type'='application/json'
   'Authorization'=$token.CreateAuthorizationHeader()
}

# properly format groups path
$groupsPath = ""
if ($groupID -eq "me") {
    $groupsPath = "myorg"
} else {
    $groupsPath = "myorg/groups/$groupID"
}

# refresh Field Booking Trends
# Refresh the dataset
$uri = "https://api.powerbi.com/v1.0/$groupsPath/datasets/$datasetID/refreshes"
Invoke-RestMethod -Uri $uri –Headers $authHeader –Method POST –Verbose


katiec

En respuesta a v-ljerr-msft

Hola,

Estoy de acuerdo en que es un problema de PowerShell, pero pensé que lo publicaría aquí ya que estaba relacionado con Power BI. Resolví el problema por mi cuenta. Estas son las dos piezas de código que tuve que actualizar para que la muestra funcionara (en caso de que alguien esté interesado en hacer esto también):

$authHeader = @{
Autorización=$token.CreateAuthorizationHeader()
Contenido = «aplicación/json»
}

guiones largos a guiones cortos:

Invoke-RestMethod -Uri $uri -Headers $authHeader -Method POST -Detallado

Hola @KatieC,

Parece ser que el problema está más relacionado con PowerShell, por lo que sugeriría publicarlo en el foro de PowerShell para obtener una mejor asistencia. carita feliz

Además, aquí hay un hilo similar para su referencia.

Saludos

katiec

En respuesta a v-ljerr-msft

Hola,

Estoy de acuerdo en que es un problema de PowerShell, pero pensé que lo publicaría aquí ya que estaba relacionado con Power BI. Resolví el problema por mi cuenta. Estas son las dos piezas de código que tuve que actualizar para que la muestra funcionara (en caso de que alguien esté interesado en hacer esto también):

$authHeader = @{
Autorización=$token.CreateAuthorizationHeader()
Contenido = «aplicación/json»
}

guiones largos a guiones cortos:

Invoke-RestMethod -Uri $uri -Headers $authHeader -Method POST -Detallado

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *