防止Azure PowerShell凭据过期?

时间:2015-03-26 10:09:06

标签: powershell azure

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

  Your Windows Azure credential in the Windows PowerShell session has expired. Please use Add-AzureAccount to login again.

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

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

由于

1 个答案:

答案 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