Quantcast
Channel: MSDN Blogs
Viewing all articles
Browse latest Browse all 5308

PowerShell script to execute DOS commands using KUDU APIs

$
0
0


Lets say you would like to get the machine name from all VM instances that are running your Azure AppService website or you would like to create a folder under the wwwroot, this below sample PowerShell scripts can execute any DOS command


#Login-AzureRmAccount

$resoureGroupName = "wabac"
$websiteName = "wabacblue"

$env = @{
    command= 'Set COMPUTERNAME'
    dir= 'site'
}
$json = $env | ConvertTo-Json

$env2 = @{
    command= 'mkdir vdir'
    dir= 'sitewwwroot'
}
$json2 = $env2 | ConvertTo-Json

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

[System.Uri]$Uri = $apiBaseUrl

$instances = Get-AzureRmResource -ResourceGroupName $resoureGroupName `
                                    -ResourceType Microsoft.Web/sites/instances `
                                    -ResourceName $websiteName `
                                    -ApiVersion 2018-02-01


foreach($instance in $instances)
{
    $instanceName = $instance.Name
    Write-Host "`tVM Instance ID `t`t: " $instanceName

    #Now execute 'SET COMPUTER' cmd
    $cookie= New-Object System.Net.Cookie
    $cookie.Name = "ARRAffinity"
    $cookie.Value = $instanceName
    $Cookie.Domain = $uri.DnsSafeHost
    $session=New-Object Microsoft.Powershell.Commands.WebRequestSession
    $session.Cookies.add($cookie)

    $response = Invoke-RestMethod -Uri "$apiBaseUrl/command" `
                                    -Headers @{Authorization=("Basic {0}" `
                                    -f $base64AuthInfo)} `
                                    -Method Post -Body $json `
                                    -ContentType 'application/json' `
                                    -WebSession $session
    Write-Host "`tVM Instance Name `t: " $response

    $response = Invoke-RestMethod -Uri "$apiBaseUrl/command" `
                                    -Headers @{Authorization=("Basic {0}" `
                                    -f $base64AuthInfo)} `
                                    -Method Post -Body $json2 `
                                    -ContentType 'application/json' `
                                    -WebSession $session
    Write-Host "`tCreate folder Results `t: " $response
}


Viewing all articles
Browse latest Browse all 5308

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>