登录-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
}
我有一个 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
}