Я думаю, что основная причина кроется в том, что некоторые скрипты powershell неправильно конвертированы в код c #.
Я установил точку останова в коде c # и получил сгенерированные скрипты powershell, а затем сравнил их с вашими оригинальными скриптами powershell,Некоторые сценарии в c # заключены в одинарные кавычки, но в оригинальном PowerShell он заключен в двойные кавычки, что может привести к ошибкам.
Например, в оригинальном PowerShell эта строка кода: $body = "grant_type=refresh_token&refresh_token=$($refreshToken)&resource=74658136-14ec-4630-ad9b-26e160ff0fc6"
, нов вашем коде c # (установите точку останова для получения значения), он заключен в одинарную кавычку, например $body ='grant_type=refresh_token&refresh_token=$($refreshToken)&resource="74658136-14ec-4630-ad9b-26e160ff0fc6"'
.
. Поэтому, пожалуйста, установите точку останова в вашем коде c # и получите сгенерированные сценарии powershell из c #, иубедитесь, что он совпадает с вашими оригинальными скриптами powershell.
Согласно сравнению, в вашем коде c # необходимо изменить 3 строки, вы можете заменить соответствующую строку следующими:
"$body = \"grant_type=refresh_token&refresh_token=$($refreshToken)&resource=74658136-14ec-4630-ad9b-26e160ff0fc6\"; \n" +
"$apiToken = Invoke-RestMethod \"https://login.windows.net/$tenantId/oauth2/authorize?client_id=$azureAppId&response_type=code&&redirect_uri=https%3A%2F%2FPowerBiApp.contoso.com&response_mode=query\" -Method POST -Body $body -ContentType 'application/x-www-form-urlencoded'; \n" +
"$url = \"https://main.iam.ad.ext.azure.com/api/RegisteredApplications/$azureAppId/Consent?onBehalfOfAll=true\"; \n" +
Надеюсь, это поможет.
Получите сгенерированные сценарии ps из кода C #: