通过 Azure Powershell 对资源管理器进行无人值守的身份验证

Unattended authentication through Azure Powershell for Resource Manager

我有一大堆 Azure Powershell 部署脚本,这些脚本在构建完成后由构建服务器触发,运行良好 - 我使用 Import-AzurePublishSettingsFile(安全地存储在本地)无人值守登录 Azure。

我现在需要扩展这些以包括 Sql Azure 服务器、弹性池和数据库的管理。

但是,这些是 Azure Resource Manager cmdlets 的一部分,它们具有不同的身份验证方法。

我找到了这些文章:

但所有这些似乎都要求您在此过程的某个阶段输入您的凭据。上面的第二个 link 明确指出:

The AzureResourceManager module requires Add-AzureAccount. A Publish Settings file is not sufficient.

我已经尝试(只是想看看会发生什么)使用 Switch-AzureMode -Name AzureResourceManager 切换到资源管理器,然后只执行其中一个 cmdlet,例如 Get-AzureResourceGroup -Name "blah" 但我只收到错误

Get-AzureResourceGroup : AuthenticationFailed: Authentication failed. The 'Authorization' header is not present or provided in an invalid format.

我很高兴通过门户手动设置 AD 应用程序一次,然后为我的脚本提供相关应用程序 ID 或任何所需内容。我只需要它无人值守,这样我的构建就可以部署了!

谁能告诉我如何制作无人值守脚本以通过 Powershell 使用这些 Azure 资源管理器 cmdlet?

此 post 提供了有关如何执行此操作的完整详细信息。基本上,您使用 AD 用户的用户名和密码嵌入您的 powershell 脚本。

但请注意,如果您像我一样希望合并对 AzureResourceManager AzureServiceManagement 模式的调用(使用 Switch-AzureMode),那么您必须使用 Add-AzureAccount -Credential <credentials> 以及 Remove-AzureAccount -Name <username> 否则某些 AzureServiceManagement 模式 cmdlet 将停止工作。