登录-AzureRmAccount 无人值守

Login-AzureRmAccount unattended

我有一个 Powershell 脚本来设置应用程序配置设置,如下所示:

Set-AzureRMWebApp -Name $SiteName -ResourceGroupName $ResourceGroupName -AppSettings $settings

此脚本将由 Azure 中的 VSTS 发布管理使用,但也将由开发人员在其 VS2015 中使用 IDE。

PS 脚本有一个命令 'Login-AzureRmAccount',它将在他们的本地开发机器上显示一个弹出窗口,没关系。

但是这个脚本也被 Release-Management 使用 PS 任务使用,但是我在开始发布时遇到错误: 'Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation'.

如何仅在 VSTS 中阻止对话框?

(请注意,Set-AzureRMWebApp 似乎工作正常,但只是阻止对话框导致任务错误)。

您需要参数化脚本的登录部分,因此只有 运行 不是由开发人员 运行 设置的。当开发者 运行 它时,用一个 switch 来调用它。

然后你可以这样做

$secret = yourServicePrincipalKey
$azureApplicationId = yourServicePrincipalID
if (!switch)
{
$password = ConvertTo-SecureString -String $secret -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ($azureApplicationId, $password)
$access = Login-AzureRmAccount -Credential $creds -ServicePrincipal -TenantId $tenantId
}

您可以看到 Login-AzureRmAccount 启用了 -servicePrincipal 开关

这是有效的修复方法:

if ([Environment]::UserInteractive -and
        !([Environment]::GetCommandLineArgs() |? {$_ -ilike '-NonI*'}))
{
    Login-AzureRmAccount
}