Sto cercando di utilizzare PowerShell per inserire un file di contenuto aggiornato in un sito Web di Azure tramite l’API REST. Tuttavia, quando si forniscono le credenziali in Invoke-RestMethod -Credentials
viene restituito l’HTML della pagina di accesso di Azure standard.
Come posso autenticarmi con Kudu di PowerShell? Grazie.
È ansible prima ottenere il sito Web tramite PowerShell e quindi utilizzare le credenziali di pubblicazione dal sito Web per chiamare l’API REST di Kudu. L’esempio seguente otterrà la versione di Kudu.
$website = Get-AzureWebsite -Name "WebsiteName" $username = $website.PublishingUsername $password = $website.PublishingPassword $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password))) $apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api" $kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET
Nel nuovo mondo ARM e con l’ultimo PowerShell, dovrai apportare alcune modifiche alla risposta di @ Seth.
Nello specifico, il modo in cui ottieni le credenziali di pubblicazione è diverso, ovvero le prime 3 righe. Il resto l’ho copiato spudoratamente da @Seth per completare lo snippet.
Assicurati di sostituire YourResourceGroup / YourWebApp come appropriato:
$creds = Invoke-AzureRmResourceAction -ResourceGroupName YourResourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName YourWebApp/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force $username = $creds.Properties.PublishingUserName $password = $creds.Properties.PublishingPassword $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password))) $apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api" $kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET