В настоящее время я изучаю, как создавать лазурные среды с помощью командлетов PowerShell Resource Management.
Классический способ работы не имел проблем, я мог использовать Add-AzureAccount
и это позволит мне получить доступ к моим подпискам.
Однако с новыми командлетами Resource Manager, когда я использую Add-AzureRmAccount
Я получаю одну из двух ошибок.
При использовании сохраненных учетных данных с помощью $Cred = Get-Credentials
, а затем войдите в систему, используя Add-AzureRmAccount -Credential $cred
Я получаю следующую ошибку:
Не удалось получить доступ к обмену метаданными ws.
При использовании приглашения входа в систему. Это означает, что я просто набираю Add-AzureRmAccount
и перенаправляет меня на страницу системы единого входа моей компании. В которой я успешно вхожу в систему. Я получаю следующую ошибку:
Произошла ошибка при отправке запроса.
Когда я пытался использовать командлет из дома, используя vpn для подключения к тому же ноутбуку, который я использовал раньше. Я отлично могу подключиться, используя Add-AzureRmAccount
и следуя подсказкам для входа в систему. Использование сохраненных $cred
entials по-прежнему не работает с ошибкой обмена метаданными.
Я предполагаю, что метод сохраненных учетных данных не работает, потому что он не может перенаправить на SSO без интерактивного запроса.
Однако я не уверен, что могло вызвать сбой интерактивного входа в систему, так как я четко могу получить доступ к SSO, а Add-AzureAccount
командлет работает на том же компьютере.
В чем разница между Add-AzureAccount
и Add-AzureRmAccount
командлеты, которые могут вызывать это?
ОБНОВИТЬ:
Ошибка полной трассировки стека:
Message : An error occurred while sending the request.
Data : {}
InnerException : System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
TargetSite : Void ThrowForNonSuccess(System.Threading.Tasks.Task)
StackTrace : at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
at Microsoft.Azure.Subscriptions.TenantOperationsExtensions.List(ITenantOperations operations)
at Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient.ListAccountTenants(AzureAccount
account, AzureEnvironment environment, SecureString password, ShowDialog promptBehavior)
at Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient.Login(AzureAccount account,
AzureEnvironment environment, String tenantId, String subscriptionId, String subscriptionName,
SecureString password)
at Microsoft.Azure.Commands.Profile.AddAzureRMAccountCommand.ProcessRecord()
at System.Management.Automation.Cmdlet.DoProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
HelpLink :
Source : Microsoft.Threading.Tasks
HResult : -2146233088
Похоже, моя ошибка связана с брандмауэром.
Я не уверен, почему одна команда (Add-AzureRmAccount
) обнаруживает ошибку, а более старая версия (Add-AzureAccount
) не.
На основании комментария, сделанного Колин1337 о разнице, скорее всего, в веб-API.
И ошибка аутентификации связана с неправильной аутентификацией прокси-сервера.
Аналогичный вопрос по переполнение стека где другой, также веб-командлет api, имел аналогичную ошибку, предоставил решение.
Как упоминалось в ответ там Мне просто нужно добавить следующий код в начало моих скриптов:
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials