2016-11-23 60 views
0

我有一個PowerShell腳本來設置應用程序配置設置,就像這樣:登錄-AzureRmAccount無人值守

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

這個腳本會在Azure中,也通過他們的VS2015 IDE內開發VSTS發佈,管理使用。

PS腳本有一個命令「Login-AzureRmAccount」,它將在其本地開發機器上顯示一個彈出窗口,沒關係。

但是這個腳本是利用PS的任務也被髮布,管理,但踢了一個版本時,我得到一個錯誤: 「顯示模式對話框或形成當應用程序不UserInteractive模式下運行時不是有效的操作'

如何防止VSTS中的對話框? (請注意Set-AzureRMWebApp似乎工作正常,但只有防止對話導致任務錯誤)。

+1

請參閱'使用服務主體部分進行身份驗證:https://blogs.endjin.com/2016/01/azure-resource-manager-authentication-from-a-powershell-script/。 HTH。 –

+0

如果您使用的是「Azure Powershell腳本」任務,則腳本運行時,該過程已經過身份驗證。我想你只需要弄清楚如何跳過'Login-AzureRmAccount'。 –

回答

0

這是工作的修補程序:

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

您需要對腳本的登錄部分進行參數設置,以便它僅在未由開發人員運行時運行。當開發者運行它時,用一個開關調用它來說明。

然後,你可以這樣做

$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 
} 

你可以看到,登錄-AzureRmAccount有-servicePrincipal開關啓用