如何使用PowerShell列出azure订阅中的所有正在运行的webjobs

时间:2016-11-03 11:33:29

标签: powershell azure azure-web-sites azure-resource-manager

我有一个天蓝色的订阅,有超过200个appServices,其中大约一半有连续,总是在webJobs附加,有些也有插槽也有webJobs。

有没有办法列出订阅中的所有webJobs?我原本想要使用powershell来做这件事,但它变得相当复杂,并且想知道是否有人知道实现上述目标的简单方法。

似乎Get-AzureRmWebApp应该能够提供帮助,但我无法找到一种方法来列出驻留在webapps中的作业。

2 个答案:

答案 0 :(得分:3)

我找到了命令Get-AzureWebsiteJob,它不在AzureRM系列的命令行开关中。以下脚本可以获取我正在寻找的数据:

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

上述内容并未过滤掉已停止的正在运行的内容,但如果需要,可以轻松添加。

当然,您首先需要登录AzureRM和Azure classic

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId <<mySubscriptionId>>
Get-AzureRmContext

Add-AzureAccount
Select-AzureSubscription -SubscriptionId <<mySubscriptionId>>
Get-AzureSubscription -Current

虽然它是一个非常慢的脚本迭代这个数字或AppServices。任何加快速度的想法都会受到赞赏。

答案 1 :(得分:2)

您可以通过ARM API执行此操作,但仍需要在每个Web App上调用它。

您可以通过GET请求获取WebJobs:

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

但我怀疑这会比你所拥有的更有效率,因为你还需要为每个Web应用程序打电话。而且您需要以某种方式获取访问令牌。

Web作业是App Service应用程序的属性,无法一次性从Azure请求。