O Cmdlet do Azure Add-AzureRmAccount não funciona na linha corporativa

3

Atualmente estou aprendendo a criar ambientes azuis usando cmdlets do PowerShell Resource Management.
A maneira clássica de trabalhar não teve problemas, eu poderia usar Add-AzureAccount e permitiria que eu acessasse minhas assinaturas.

No entanto, com os novos cmdlets do Resource Manager, quando uso Add-AzureRmAccount , obtenho um dos dois erros.

Ao usar credenciais armazenadas usando $Cred = Get-Credentials e, em seguida, efetuando login usando Add-AzureRmAccount -Credential $cred , recebo o seguinte erro:

Accessing ws metadata exchange failed.

Ao usar o prompt de login. O que significa que eu apenas digito Add-AzureRmAccount e me encaminha para a página SSO da minha empresa. Em que eu logar com sucesso. Eu recebo o seguinte erro:

An error occurred while sending the request.

Quando tentei usar o cmdlet de casa, usando o vpn para me conectar ao mesmo laptop que eu estava usando antes. Posso me conectar perfeitamente usando Add-AzureRmAccount e seguindo os prompts de logon. O uso do percentual $cred armazenado ainda falha com o erro de troca de metadados.

Estou assumindo que o método de credenciais armazenadas está falhando porque não pode redirecionar para o SSO sem o prompt interativo.
No entanto, não sei ao certo o que pode estar causando falha no logon interativo, pois posso alcançar claramente o SSO, e o cmdlet Add-AzureAccount funciona na mesma máquina.

Qual é a diferença entre os cmdlets Add-AzureAccount e Add-AzureRmAccount que podem estar causando isso?

ATUALIZAÇÃO:

O erro de rastreamento completo da pilha é:

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

Parece que meu erro está relacionado ao firewall.
Não sei por que o único comando ( Add-AzureRmAccount ) encontra o erro, enquanto a versão anterior ( Add-AzureAccount ) não o faz.

    
por Reaces 24.12.2015 / 09:25

1 resposta

2

Baseado no comentário feito por Colyn1337 sobre a diferença ser uma API baseada na web.
E o erro de autenticação está relacionado a um servidor proxy que não está autenticando corretamente.

Uma pergunta semelhante em stackoverflow em que um cmdlet diferente, também baseado na web, tinha um erro semelhante, desde a solução.
Como mencionado em a resposta lá , basta adicionar o seguinte código no início dos meus scripts:

[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
    
por 30.12.2015 / 12:02