#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) в мой скрипт он заработал. ценю вашу помощь 🙂