我需要在Azure环境中定期备份一套VM。我认为对此明显的解决方案是使用PowerShell自动化该过程,因此编写了一个脚本来做到这一点。我希望这个按计划运行,无需人工干预即可无人值守。但是,我遇到的问题是我每隔几天就会收到错误:
Your Windows Azure credential in the Windows PowerShell session has expired. Please use Add-AzureAccount to login again.
这意味着我必须重新运行Add-AzureAccount并通过关联的弹出窗口重新登录,一切都有效。显然这并不好,并且否定了实现这种自动化的好处。
有什么方法可以阻止这些凭据到期吗?
由于
答案 0 :(得分:6)
是,请改用证书身份验证。使用Add-AzureAccount
的一个缺点是凭证会不时到期。您可以再次运行Add-AzureAccount,但在这种情况下,证书身份验证最适合您。
首先,使用Remove-AzureAccount
cmdlet删除您在PowerShell中注册的当前帐户。类似的东西:
Remove-AzureAccount -Name name@account.onmicrosoft.com
这不会从Azure中删除您的帐户,只是您在PowerShell控制台中使用的引用(从您使用Add-AzureAccount
时开始)。然后你运行
Get-AzurePublishSettingsFile
这将打开一个浏览器窗口,要求您对您的帐户进行身份验证,然后您下载以.publishsettings结尾的文件
然后,在Azure PowerShell中运行
Import-AzurePublishSettingsFile -PublishSettingsFile <path_to_file>
将从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