How to list all running webjobs within an azure subscription using powershell

后端 未结 2 857
温柔的废话
温柔的废话 2020-12-21 14:33

I have an azure subscription that has upwards of 200 appServices where around about half of them have Continuous, always on webJobs attached, some also have slots which also

相关标签:
2条回答
  • 2020-12-21 15:21

    You can do it through the ARM APIs, though you still need to call it on each Web App.

    You can get the WebJobs with a GET request to:

    https://management.azure.com/subscriptions/subscription-id/resourceGroups/resource-group-name/providers/Microsoft.Web/sites/app-name/webjobs?api-version=2016-03-01
    

    But I doubt this will be any more efficient than what you have since you still need to make a call for every Web App. And you will need to get the access token somehow.

    Web Jobs are a property of App Service applications and can't be requested all at once from Azure.

    0 讨论(0)
  • 2020-12-21 15:36

    I found the command Get-AzureWebsiteJob which is not in the AzureRM family of commandlets. The following script can get the data that I'm looking for:

    $groups = get-AzureRmResourceGroup | where{$_.ResourceGroupName -like "*-prod-*"}
    
    foreach($group in $groups){
        Write-Host -ForegroundColor Cyan "processing resourceGroup" $group.ResourceGroupName
    
        $webApps = Get-AzureRmWebApp -ResourceGroupName $group.ResourceGroupName
    
        foreach($webApp in $webApps){
            write-host -ForegroundColor Yellow $webApp.Name        
            $job = Get-AzureWebsiteJob -Name $webApp.Name
            if($job){ 
                write-host -ForegroundColor DarkYellow $job.JobName
            }        
            $job = Get-AzureWebsiteJob -Name $webApp.Name -Slot staging
            if($job){
                write-host -ForegroundColor DarkYellow $job.JobName " -staging"
            }
        }
    }
    

    The above does not filter out the running ones from the stopped, but that can be easily added if need be.

    Of course you firstly need to be logged into AzureRM and Azure classic

    Login-AzureRmAccount
    Select-AzureRmSubscription -SubscriptionId <<mySubscriptionId>>
    Get-AzureRmContext
    
    Add-AzureAccount
    Select-AzureSubscription -SubscriptionId <<mySubscriptionId>>
    Get-AzureSubscription -Current
    

    Its a very slow script iterating over this number or AppServices though. Any ideas for speeding it up would be appreciated.

    0 讨论(0)
提交回复
热议问题