防止Azure PowerShell凭据过期?

LDJ*_*LDJ 2 powershell azure

我需要在Azure环境中定期备份一套VM.我认为对此明显的解决方案是使用PowerShell自动化该过程,因此编写了一个脚本来做到这一点.我希望这个按计划运行,无需人工干预即可无人值守.但是,我遇到的问题是每隔几天我就会收到错误:

  Your Windows Azure credential in the Windows PowerShell session has expired. Please use Add-AzureAccount to login again.
Run Code Online (Sandbox Code Playgroud)

这意味着我必须重新运行Add-AzureAccount并通过关联的弹出窗口重新登录,一切都有效.显然这并不好,否定了实现这种自动化的好处.

有什么办法可以阻止这些凭据到期吗?

谢谢

Lew*_*wis 6

是的,通过使用证书身份验证.使用的缺点之一Add-AzureAccount是凭证不时到期.您可以再次运行Add-AzureAccount,但在这种情况下,证书身份验证最适合您.

首先,使用Remove-AzureAccountcmdlet 删除您在PowerShell中注册的当前帐户.就像是:

Remove-AzureAccount -Name name@account.onmicrosoft.com
Run Code Online (Sandbox Code Playgroud)

这不会从Azure中删除您的帐户,只会删除您在PowerShell控制台中使用的引用(从您使用时开始Add-AzureAccount).然后你跑

Get-AzurePublishSettingsFile
Run Code Online (Sandbox Code Playgroud)

这将打开一个浏览器窗口,要求您对您的帐户进行身份验证,然后您将下载以.publishsettings结尾的文件

然后,在Azure PowerShell中运行

Import-AzurePublishSettingsFile -PublishSettingsFile <path_to_file>
Run Code Online (Sandbox Code Playgroud)

它将从publishsettings文件导入证书,允许您不使用而执行脚本Add-AzureAccount.

Set-AzureSubscription -SubscriptionName <name_of_subscription>如果您碰巧有多个订阅,您可能还需要使用.

此外,以下MSDN博客正如我上面所述描述了该过程.http://blogs.technet.com/b/ricardma/archive/2014/07/04/managing-azure-subscriptions-in-powershell.aspx