Вызывать командлеты Azure powershell из C#

#c# #azure #powershell #azure-active-directory #azure-powershell

#c# #azure #powershell #azure-active-directory #azure-powershell

Вопрос:

Я работаю над программой C # forms, которая поможет настроить ресурсы Azure. Я использую командлеты powershell для входа в AzureRM и для создания Active directory. Вход в систему работает нормально, но когда я пытаюсь создать Active directory, я получаю сообщение об ошибке от powershell:

 Application Insights Telemetry: {"name":"Microsoft.ApplicationInsights.7df6ff708353467280d6568517fed090.PageView","time":"2019-03-21T22:20:18.1820642 03:00","iKey":"7df6ff70-8353-4672-80d6-568517fed090","tags":{"ai.user.id":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","ai.user.accountId":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","ai.session.id":"b6ed2600-5938-4a1a-b7f2-b1072fcaf774","ai.device.osVersion":"Microsoft Windows NT 6.2.9200.0","ai.internal.sdkVersion":"1.2.0.5639","ai.location.ip":"0.0.0.0"},"data":{"baseType":"PageViewData","baseData":{"ver":2,"name":"cmdletInvocation","duration":"00:00:00.0160076","properties":{"Command":"New-AzureRmADApplication","IsSuccess":"False","ModuleName":"Microsoft.Azure.Commands.Resources","ModuleVersion":"6.7.2.0","OS":"Microsoft Windows NT 6.2.9200.0","CommandParameters":"-DisplayName *** -HomePage *** -IdentifierUris *** -Password ***","UserId":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","x-ms-client-request-id":"5d0aa766-4e81-4232-8236-54447c4df88c","UserAgent":"AzurePowershell/v6.9.0","HashMacAddress":"339500ecbc667317fed5b3211289faeab2fcc5b55621a8060bd69d629f2a897f","PowerShellVersion":"5.1.17763.316","Version":"6.9.0","CommandParameterSetName":"ApplicationWithPasswordPlainParameterSet","CommandInvocationName":"New-AzureRmADApplication"}}}}
Application Insights Telemetry: {"name":"Microsoft.ApplicationInsights.7df6ff708353467280d6568517fed090.Exception","time":"2019-03-21T22:20:18.2776369 03:00","iKey":"7df6ff70-8353-4672-80d6-568517fed090","tags":{"ai.internal.sdkVersion":"1.2.0.5639","ai.location.ip":"0.0.0.0","ai.user.id":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","ai.user.accountId":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","ai.session.id":"b6ed2600-5938-4a1a-b7f2-b1072fcaf774","ai.device.osVersion":"Microsoft Windows NT 6.2.9200.0"},"data":{"baseType":"ExceptionData","baseData":{"ver":2,"handledAt":"UserCode","properties":{"Command":"New-AzureRmADApplication","IsSuccess":"False","ModuleName":"Microsoft.Azure.Commands.Resources","ModuleVersion":"6.7.2.0","OS":"Microsoft Windows NT 6.2.9200.0","CommandParameters":"-DisplayName *** -HomePage *** -IdentifierUris *** -Password ***","UserId":"DE-FD-2E-3E-83-A8-D1-88-F1-34-3A-7C-6B-C1-D0-A0-D6-F4-13-05-02-53-8D-59-98-1C-F6-83-EA-EA-AE-75","x-ms-client-request-id":"5d0aa766-4e81-4232-8236-54447c4df88c","UserAgent":"AzurePowershell/v6.9.0","HashMacAddress":"339500ecbc667317fed5b3211289faeab2fcc5b55621a8060bd69d629f2a897f","PowerShellVersion":"5.1.17763.316","Version":"6.9.0","CommandParameterSetName":"ApplicationWithPasswordPlainParameterSet","CommandInvocationName":"New-AzureRmADApplication","Message":"Message removed due to PII.","StackTrace":"в Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory.ActiveDirectoryBaseCmdlet.HandleException(Exception exception)rn   в Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory.ActiveDirectoryBaseCmdlet.ExecutionBlock(Action execAction)rn   в Microsoft.Azure.Commands.ActiveDirectory.NewAzureADApplicationCommand.ExecuteCmdlet()rn   в Microsoft.WindowsAzure.Commands.Utilities.Common.CmdletExtensions.<>c__3`1.<ExecuteSynchronouslyOrAsJob>b__3_0(T c)rn   в Microsoft.WindowsAzure.Commands.Utilities.Common.CmdletExtensions.ExecuteSynchronouslyOrAsJob[T](T cmdlet, Action`1 executor)rn   в Microsoft.WindowsAzure.Commands.Utilities.Common.CmdletExtensions.ExecuteSynchronouslyOrAsJob[T](T cmdlet)rn   в Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord()","ExceptionType":"System.MissingMethodException"},"measurements":{"Duration":16.0076},"exceptions":[{"id":2785032,"typeName":"System.Exception","message":"message is a required field for Microsoft.ApplicationInsights.DataContracts.ExceptionTelemetry","hasFullStack":true}]}}}
  

Я пытался переустановить модули powershell AzureRM, Az, Azure. Я также пытался установить и импортировать эти модули из кода C # непосредственно перед вызовом командлетов.
После этого я создал консольное приложение C # с тем же кодом, и оно отлично работает.

Вот оба проекта:https://dropmefiles.com/FdImg

Ошибка находится в AzureConfig5 в форме «Form_ActiveDirectory» в строке 92.

Комментарии:

1. 1) При создании нового приложения происходит сбой.. хотя причина сбоя мне пока не ясна, потому что в журналах просто написано, что сообщение удалено из-за PII. 2) Работало ли это когда-нибудь? причина, по которой я прошу, — исключить любые проблемы, связанные с разрешениями, если это работало раньше и не удается сейчас, возможно, это данные 3) Вы всегда можете попробовать вызвать эту команду New-AzureRmADApplication с теми же параметрами из PowerShell и увидеть, что это проблема со значениями параметров.. поделитесь используемыми значениями параметров (удалите всю конфиденциальную информацию)

2. это работает из powershell и из консольного приложения, но не из приложения Windows Forms. Я думаю, что ключом является «ExceptionType»:»System.missingmethod Exception» в конце второй строки, но я не знаю, что мне с этим делать. Я попытался перезагрузить модули, но ничего не изменилось.

3. Используете ли вы тот же идентификатор для приложения Windows Forms, который вы используете при тестировании из PowerShell? поскольку разрешения могут быть проблемой.

4. Вы также можете вызвать соответствующий REST API или использовать SDK из своего приложения Windows forms вместо вызова PowerShell.. как и в этом случае, для создания регистрации приложения будет использоваться Azure AD Graph API..

5. Ваше утверждение об идентификации выглядит разумным. Какие ключевые слова для Google something об идентификации? Какие командлеты используются для его получения?