Автоматизация подключения-скрипт Powershell AzureAD

#azure #powershell #automation #active-directory #azure-active-directory

Вопрос:

Я создал сценарий с помощью PowerShell, который подключается к AzureAD, который должен автоматически подключаться к AzureAD. Ниже приведен мой сценарий.

 $TenantId = "" $SecFile = "C:Azure-ADPassword.txt" $SecUser = "C:Azure-ADUserName.txt" $MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SecUser,  (Get-Content $SecFile | ConvertTo-SecureString)  Connect-AzureAD -TenantId $TenantId-credential $MyCredential  

Я использую следующую строку для генерации для шифрования своего пароля

 (Get-Credential).Password | ConvertFrom-SecureString | Out-File "C:AzureADPassword.txt"  

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

 PS C:Azure-AD> .Azure-Connect.ps1 Connect-AzureAD : One or more errors occurred.: At C:BackupTableauAzure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], AadAuthenticationFailedException    FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD  Connect-AzureAD: One or more errors occurred. At C:Azure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], AggregateException    FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD  Connect-AzureAD : At C:Azure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], AdalServiceException    FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD  Connect-AzureAD : Response status code does not indicate success: 404 (NotFound). At C:Azure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], HttpRequestException    FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD  Connect-AzureAD : : Unknown error At C:Azure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : AuthenticationError: (:) [Connect-AzureAD], AdalException    FullyQualifiedErrorId : Connect-AzureAD,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD  Connect-AzureAD : One or more errors occurred.: At C:Azure-ADAzure-Connect.ps1:10 char:1   Connect-AzureAD -TenantId $TenantId -credential $MyCredential   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    CategoryInfo : NotSpecified: (:) [Connect-AzureAD], AadAuthenticationFailedException    FullyQualifiedErrorId : Microsoft.Open.Azure.AD.CommonLibrary.AadAuthenticationFailedException,Microsoft.Open.Azure.AD.CommonLibrary.ConnectAzureAD   

Есть какие-либо решения о том, как я могу исправить ошибку, чтобы скрипт успешно запустился?

Ответ №1:

Ваш сценарий, как (изначально) написано, использует (Get-Content $secFile ...) для извлечения пароля из файлов паролей, но просто передает $secUser в качестве имени пользователя, которое будет просто именем файла, содержащим вашего пользователя.

Попробуйте использовать (Get-Content $secUser) , чтобы получить значение имени пользователя из файла.

Я думаю, это вам поможет. Помимо этого, могу ли я заинтересовать вас относительно новыми модулями Microsoft.Powershell.SecretManagement и Microsoft.Powershell.SecretStore , которые позволяют вам более безопасно хранить свои учетные данные без необходимости хранить их в виде открытого текста в файлах — я довольно часто использую эти модули для хранения личных токенов доступа , которые я использую, например, в API REST Azure DevOps.

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

1. Спасибо, после добавления (Get-Content $secUser) в мой скрипт он заработал. ценю вашу помощь 🙂