我正在编写一个 PowerShell 部署脚本,它可以自动创建我的 Azure 资源和随附的 ServicePrincipal。
这是我正在使用的代码,我在使用最新的 Azure 1.0.4 SDK 模块直接从 PowerShell 运行时对其进行了测试和工作:
$ResourceGroupName = "my-resource-group"
$ADAppIdentifierUri = [string]::Concat("https://", $ResourceGroupName, ".azurewebsites.net")
# Generate a password for the AD application
$ServicePrincipalPassword = [Guid]::NewGuid().ToString().Replace("-", "")
# Create the Azure AD Application and service principal, and only assign access to our resource group
$AzureADApplication = New-AzureRmADApplication -DisplayName $ResourceGroupName -HomePage $ADAppIdentifierUri -IdentifierUris $ADAppIdentifierUri -Password $ServicePrincipalPassword
当我在 Visual Studio 中使用我的 ResourceGroup 项目部署脚本运行此代码时,我收到以下错误:
New-AzureRmADApplication:无法将“Microsoft.Azure.TokenCloudCredentials”类型的对象转换为“Microsoft.Azure.Common.Authentication.AccessTokenCredential”类型。
根据堆栈跟踪,异常是在命令 New-AzureRmADApplication 开始时引发的,因此不幸的是,异常是在 Azure SDK 代码内部发生的。
我在以下文件中浏览了 SDK 的源代码,但找不到任何见解:
我只能在此链接中找到一个遇到同样错误的人: https ://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/
但是,那里的解决方案对我没有意义,因为我没有使用管理证书进行身份验证,并且在 manage.windowsazure.com 站点上没有列出任何管理证书。