Connect-Azure AD в PowerShell Script, вызываемый из C #, дает сбой определенным образом В ПЕРВЫЙ РАЗ, а затем работает? - PullRequest
0 голосов
/ 27 сентября 2019

Вот суть моей проблемы.У меня есть программа на C #, которая вызывает несколько командлетов PowerShell.

Все вызовы работают, кроме случаев, когда я получаю сообщение «Connect-AzureAD -TenantId XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

Но способ, которым это "терпит неудачу", странен.Позволяет только ввести мою учетную запись Microsoft, но не пароль.Если я снова запускаю его, я могу войти в систему правильно, и это работает.

Я думал, что выбил какой-то тайм-аут, но каждый вызов ниже приводит к исключению Null Reference Exception.Вы можете видеть мои комментарии разочарования.

 // All of these are set to null...so what gives?
 // all generate NRE's
 //Debug.Print("MaxIdle Timeout is |{0}|", runspace.ConnectionInfo.MaxIdleTimeout.ToString());
 //Debug.Print("Current Idle Timeout is |{0}|", runspace.ConnectionInfo.IdleTimeout.ToString());
 //Debug.Print("Operation Timeout is |{0}|", runspace.ConnectionInfo.OperationTimeout.ToString());

Мысли, идеи, комментарии?

Я могу опубликовать больше кода, если это необходимо, но все остальное работает все время.

В комментарии я добавил CR, но он, похоже, ничего не делал (я попробую CR + LF, потому что я понятия не имею, что здесь на самом деле сломано, поэтому попытаться не вредно).

Итак ... после вызова PowerShell я собираю результаты следующим образом:

      foreach (PSObject outputObject in results)

и в моем наборе результатов есть следующие четыре ошибки: {Произошла одна или несколько ошибок: на основе браузераНе удалось завершить диалог аутентификации.Причина: сервер или прокси-сервер не найден.} {Произошла одна или несколько ошибок.} {Не удалось завершить диалоговое окно проверки подлинности на основе браузера.Причина: сервер или прокси-сервер не найден.} {Произошла одна или несколько ошибок. Не удалось завершить диалог проверки подлинности на основе браузера.Причина: сервер или прокси-сервер не найден.}

Он говорит мне, что я уже знаю (что аутентификация не работает), но я все еще не понимаю, что является настоящей проблемой.

Добавление более подробной информации

Итак ... Я попробовал несколько вещей.Я добавил свою учетную запись Microsoft для подключения.Результат был еще более странным - большая задержка, отсутствие пароля и невозможность входа в систему.

Затем я настроился на настройку принципала приложения, как подробно описано здесь: «Использование субъекта службы для подключения ккаталог в PowerShell "https://docs.microsoft.com/en-us/powershell/azure/active-directory/signing-in-service-principal?view=azureadps-2.0

Я все настроил и проверил в PowerShell, что я могу подключиться, затем я поместил точно такой же (скопировал и вставил) Connect-AzureAD с владельцем, идентификатором приложенияи отпечаток сертификата, который я использовал в PowerShell.Он потерпел неудачу с этими «новыми» ошибками - все еще как-то четыре: произошла одна или несколько ошибок.Произошла ошибка при отправке запроса.Не удалось разрешить удаленное имя: 'login.microsoftonline.com' Произошла одна или несколько ошибок.

Завтра я запустлю Wireshark.У меня такое ощущение, что все эти ошибки вводят в заблуждение, хотя тот факт, что они работают со второй попытки, просто ошеломляет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...