rest powershell azure-web-sites kudu

API REST de Kudu de sitios web de Azure: autenticación



powershell azure-web-sites (2)

Estoy tratando de usar PowerShell para poner un archivo de contenido actualizado en un sitio web de Azure a través de la API REST. Sin embargo, al proporcionar mis credenciales en Invoke-RestMethod -Credentials , me devuelve el HTML de la página de inicio de sesión estándar de Azure.

¿Cómo puedo autenticarme con Kudu desde PowerShell? Gracias.


En el nuevo mundo ARM y con el último PowerShell, deberá hacer algunos ajustes a la respuesta de @ Seth.

Específicamente, la forma de obtener los créditos de publicación es diferente, que son las primeras 3 líneas. El resto lo copié descaradamente de @Seth para completar el fragmento.

Asegúrese de reemplazar YourResourceGroup / YourWebApp según corresponda:

$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


Primero puede obtener el sitio web a través de Powershell y luego usar las credenciales de publicación del sitio web para llamar a la API REST de Kudu. El siguiente ejemplo obtendrá la versión 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