私は現在、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
を使用して、ログオンプロンプトに従って完全に接続できます。保存された$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
私のエラーはファイアウォールに関連しているようです。
1つのコマンド(Add-AzureRmAccount
)でエラーが発生するのに、古いバージョン(Add-AzureAccount
)では発生しない理由がわかりません。
Colyn1337 による、WebベースのAPIである可能性のある違いについてのコメントに基づく。
また、認証エラーは、プロキシサーバーが正しく認証されていないことに関連しています。
stackoverflow に関する同様の質問で、別の、Webベースのapiコマンドレットにも同様のエラーがあり、解決策が提供されました。
そこでの答え で述べたように、スクリプトの先頭に次のコードを追加するだけです:
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials