Автоматизация Connect-AzureAD Powershell

Я создал скрипт с использованием powershell, который подключается к AzureAD, и он работал нормально, используя следующее:

Connect-AzureAD -TenantId $TenantId

Откроется окно входа в систему, и я смог успешно подключиться. Однако мне нужно настроить скрипт на автоматический запуск, поэтому я нашел этот код для этого:

# Set Configs
$TenantId = "<tenant id>"
$AzureUser = "<user>" 
$AzurePass = Get-Content "cred.txt" | ConvertTo-SecureString

# Connect to Azure AD
$AzureCred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AzureUser, $AzurePass
Connect-AzureAD -TenantId $TenantId -Credential $AzureCred

Но я не могу заставить его работать. Я использую следующее для создания моего файла cred.txt:

Read-Host -assecurestring | convertfrom-securestring | out-file C:\cred.txt

Когда я запускаю его, я получаю следующую ошибку:

Connect-AzureAD: произошла одна или несколько ошибок. Набор символов, указанный в ContentType, недопустим. Невозможно прочитать содержимое как строку, используя неправильный набор символов. В строке:9 символов:1 + Connect-AzureAD -TenantId $TenantId -Credential $AzureCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: AuthenticationError: (:) [Connect-AzureAD], AadAuthenticationFailedException + FullyQualifiedErrorId: Connect-AzureAD, Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD
Connect-AzureAD: произошла одна или несколько ошибок. В строке:9 символов:1 + Connect-AzureAD -TenantId $TenantId -Credential $AzureCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: AuthenticationError: (:) [Connect-AzureAD], AggregateException + FullyQualifiedErrorId: Connect-AzureAD, Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD
Connect-AzureAD: набор символов, указанный в ContentType, недопустим. Невозможно прочитать содержимое как строку, используя неправильный набор символов. В строке:9 символов:1 + Connect-AzureAD -TenantId $TenantId -Credential $AzureCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: AuthenticationError: (:) [Connect-AzureAD], InvalidOperationException + FullyQualifiedErrorId: Connect-AzureAD, Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD
Connect-AzureAD: "utf-8" не является поддерживаемым именем кодировки. Для получения информации об определении пользовательской кодировки см. Документацию по методу Encoding.RegisterProvider. Имя параметра: name В строке:9 символов: 1 + Connect-AzureAD -TenantId $ TenantId -Credential $ AzureCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: Ошибка аутентификации: (:) [Connect-AzureAD], ArgumentException + FullyQualifiedErrorId: Connect-AzureAD, Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD
Connect-AzureAD: произошла одна или несколько ошибок. Набор символов, указанный в ContentType, недопустим. Невозможно прочитать содержимое как строку, используя неправильный набор символов. В строке:9 символов:1 + Connect-AzureAD -TenantId $TenantId -Credential $AzureCred + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [Connect-AzureAD], AadAuthenticationFailedException + FullyQualifiedErrorId: Microsoft.Open.Azure.AD.CommonLibrary.AadAuthenticationFailedException,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD

Я вошел в систему с другим арендатором, используя тот же сценарий, и он работал нормально. Это просто не работает с арендатором, у которого есть федерация. Любой обходной путь для этого кроме выключения федерации?

1 ответ

Я не уверен, почему первоначальный скрипт не работал на нашем арендаторе. Мое предположение связано с федерацией. Я реализовал обходной путь и попытался вместо этого использовать принципала службы, следуя этой статье:

Подключение сеанса в качестве участника службы

Другие вопросы по тегам