web-dev-qa-db-ja.com

Azure Cmdlet Add-AzureRmAccountが企業ラインで機能しない

私は現在、Powershell Resource Managementコマンドレットを使用してAzure環境を作成する方法を学んでいます。
従来の作業方法には問題がなかったため、Add-AzureAccountを使用でき、サブスクリプションにアクセスできるようになりました。

ただし、新しいResource Managerコマンドレットを使用すると、Add-AzureRmAccountを使用すると、2つのエラーのいずれかが表示されます。

保存された認証情報を$Cred = Get-Credentialsを使用して使用し、Add-AzureRmAccount -Credential $credを使用してログインすると、次のエラーが表示されます。

Wsメタデータ交換へのアクセスに失敗しました。

ログインプロンプトを使用する場合。つまり、Add-AzureRmAccountと入力するだけで、会社のSSOページに転送されます。ログインに成功しました。次のエラーが発生します。

リクエストの送信中にエラーが発生しました。

自宅からコマンドレットを使用しようとしたときに、vpnを使用して、以前使用していたのと同じラップトップに接続しました。 Add-AzureRmAccountを使用して、ログオンプロンプトに従って完全に接続できます。保存された$credentialsを使用しても、メタデータ交換エラーが発生して失敗します。

対話型プロンプトがないとSSOにリダイレクトできないため、保存された資格情報メソッドが失敗していると思います。
しかし、SSOに明確に到達でき、Add-AzureAccountコマンドレットが同じマシンで機能するため、対話型ログオンが失敗する原因が何であるかわかりません。

これを引き起こしている可能性があるAdd-AzureAccountAdd-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

私のエラーはファイアウォールに関連しているようです。
1つのコマンド(Add-AzureRmAccount)でエラーが発生するのに、古いバージョン(Add-AzureAccount)では発生しない理由がわかりません。

3
Reaces

Colyn1337 による、WebベースのAPIである可能性のある違いについてのコメントに基づく。
また、認証エラーは、プロキシサーバーが正しく認証されていないことに関連しています。

stackoverflow に関する同様の質問で、別の、Webベースのapiコマンドレットにも同様のエラーがあり、解決策が提供されました。
そこでの答え で述べたように、スクリプトの先頭に次のコードを追加するだけです:

[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
1
Reaces