jose
Estoy intentando automatizar la asignación de grupos de AzureAD como contenedores de permisos en áreas de trabajo mediante PowerShell. Actualmente, esto no es posible debido a dos problemas que impiden el uso de los módulos AzureAD y MicrosoftPowerBIMgmt en el mismo script.
En primer lugar, los cmdlets de Power BI no funcionan en PowerShell 5.1 cuando el módulo AzureAD se carga en una sesión debido a un problema oculto que se informó varias veces y no se solucionó en al menos 2 años: https:// github.com/Microsoft/powerbi-powershell/issues/60. Este problema (el error devuelto «intentó acceder a un elemento como un tipo incompatible con la matriz») se puede replicar ejecutando lo siguiente:
Import-Module MicrosoftPowerBIMgmt
Import-Module AzureAD
Login-PowerBI
Get-PowerBIWorkspace -Name [any valid workspace name in tenant]
Get-PowerBIWorkspace : Attempted to access an element as a type incompatible with the array.
At line:4 char:1
+ Get-PowerBIWorkspace -Name "grp-ITSBI Product Team-Dev"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Power...owerBIWorkspace:GetPowerBIWorkspace) [Get-PowerBIWorkspace], ArrayTypeMismatchException
+ FullyQualifiedErrorId : Attempted to access an element as a type incompatible with the array.,Microsoft.PowerBI.Commands.Workspaces.GetPowerBIWorkspace
La única solución alternativa que he visto sugerida para esto es usar PowerShell Core (actualmente estoy ejecutando PowerShell 7.1.2). Desafortunadamente, esto se encuentra con este problema: https://github.com/PowerShell/PowerShell/issues/10473, que se debe a que AzureAD no es compatible con .NET Core y, por lo tanto, entra en conflicto con las bibliotecas al intentar conectarse a Azure:
Import-Module AzureAD
Connect-AzureAD
Connect-AzureAD: One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.): Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Connect-AzureAD: One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.)
Connect-AzureAD: Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Connect-AzureAD: One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.): Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Se sugirió una solución alternativa aquí https://github.com/PowerShell/PowerShell/issues/11564 para usar el interruptor -UseWindowsPowerShell en el comando import-module para compatibilidad fuera de .NET Core. Desafortunadamente, esto solo significa que obtiene el mismo error cuando intenta conectarse al servicio Power BI.
¿Alguien sabe de alguna solución alternativa que pueda estar disponible para permitir el acceso simultáneo tanto al inquilino de Azure como al servicio Power BI, o mejor aún, un canal para escalar esto o incluso una solución para este problema? Dado lo estrechamente vinculado que está Power BI con Azure, esperaría que esto funcione correctamente para que Power BI sea manejable como un servicio.
jose
Hola @v-lionel-msft,
Eso es lo que estaba intentando, por lo que sigo recibiendo el mismo error independientemente de abrir una nueva sesión. Según los comentarios en las páginas de github y en otros lugares, esto se debe a un conflicto en las DLL de Newtonsoft.Json cargadas en la sesión. Curiosamente, tengo las mismas versiones de ambos módulos que ha mostrado aquí, lo que me lleva a pensar que la versión DLL conflictiva ha aparecido a través de algún otro módulo o software en la máquina.
Este es un problema conocido y no parece que los desarrolladores puedan solucionarlo, por lo que estoy bastante sorprendido de que MS no lo haya detectado durante tanto tiempo. Según otras fuentes, el equipo de AzureAD es un poco como una caja negra, por lo que no hay muchas esperanzas de compatibilidad con .NET Core en el futuro cercano; parece que solo se puede solucionar en el lado de Power BI.
v-lionel-msft
Hola @JoshT,
¿Es esto lo que quieres?
Es posible que deba reabrir una sesión.
Atentamente,
Lionel Chen
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.