如何通过具有凭据的代理服务器运行Azure PowerShell cmdlet?

win*_*eye 6 powershell credentials azure proxy-server http-status-code-407

当我运行以下Powershell cmdlet时(来自Azure管理工具Snapin):

get-osversions -subscriptionId **** -certificate (get-item cert:\CurrentUser\MY\******)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Get-OSVersions:远程服务器返回意外响应:(407)代理身份验证必需.在行:1 char:15 + get-osversions <<<< -subscriptionId *-certificate(get-item cert:\ CurrentUser\MY*****)+ CategoryInfo:CloseError:(:) [Get-OSVersions],ProtocolException + FullyQualifiedErrorId:Microsoft.Samples.AzureManagementTools.PowerShell.HostedS ervices.GetOSVersionsCommand

Get-OSVersions:对象引用未设置为对象的实例.在行:1 char:15 + get-osversions <<<< -subscriptionId * -certificate (get-item cert:\ CurrentUser\MY***)+ CategoryInfo:CloseError:(:) [Get-OSVersions],NullReferenceException + FullyQualifiedErrorId:Microsoft.Samples.AzureManagementTools.PowerShell.HostedS ervices.GetOSVersionsCommand

似乎这里的互联网代理服务器拒绝脚本所需的访问权限.

我在互联网上看了很多,似乎没有简单的解决方法,因为这个cmdlet没有有效的"-credentials"或代理服务器参数.

我知道有一个'Get-Credential'cmdlet,但我觉得它没有用.您如何将凭证传递给Azure cmdlet?

任何人都可以想到解决这个问题的方法吗?

...除了使用不同的非代理互联网连接?

我很难过.

非常感谢您的时间.

Zaa*_*ier 17

更轻松:

[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
Run Code Online (Sandbox Code Playgroud)

  • 更容易,这应该是公认的答案! (3认同)
  • 我会说实话,并没有按照dunnry的说法运行,因为这个看起来很简单,先尝试一下.它很有效,并且很容易包含在PowerShell配置文件中,因此每次运行PowerShell时它都会自动执行. (2认同)

dun*_*nry 1

我认识的一些客户成功地使用了此处概述的方法(支持基本身份验证代理)。如果您需要其他代理类型,它遵循相同的模式。这样做的好处是它不需要更改 cmdlet。