Get-AzureWebsiteJob:未指定默认订阅

时间:2018-01-04 17:11:59

标签: powershell azure azure-web-sites azure-webjobs

I am using and edited version of the script in the first answer on this question。我首先登录,选择适当的订阅,然后获取Azure Rm上下文。我这样做时出现此错误:

  

Get-AzureWebsiteJob:未指定默认订阅。使用Select-AzureSubscription -Default设置默认订阅。

剧本:

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId subidguid
Get-AzureRmContext

$groups = get-AzureRmResourceGroup

foreach($group in $groups){

    $webApps = Get-AzureRmWebApp -ResourceGroupName $group.ResourceGroupName

    foreach($webApp in $webApps){

        write-host -ForegroundColor Yellow $webApp.Name        

        ### ERROR HAPPENS
        $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"
        }
    }
}

我确实得到了屏幕上输出的网络应用程序的名称,但是当它查找webjobs时,我收到了该错误。我根据错误尝试了以下技术,但这没有帮助(编辑完整的代码以明确我做了哪些更改,即使我仍然遇到相同的错误):

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId subidguid
Get-AzureRmContext

$groups = get-AzureRmResourceGroup

foreach($group in $groups){

    $webApps = Get-AzureRmWebApp -ResourceGroupName $group.ResourceGroupName

    foreach($webApp in $webApps){

        write-host -ForegroundColor Yellow $webApp.Name        

        ### ERROR HAPPENS
        Select-AzureRmSubscription -SubscriptionId subidguid                
        $job = Get-AzureWebsiteJob -Name $webApp.Name

        if($job){ 
            write-host -ForegroundColor DarkYellow $job.JobName
        }        

        ### ERROR HAPPENS                
        Select-AzureRmSubscription -SubscriptionId subidguid                
        $job = Get-AzureWebsiteJob -Name $webApp.Name -Slot staging

        if($job){
            write-host -ForegroundColor DarkYellow $job.JobName " -staging"
        }
    }
}

基本上,在获取Web作业详细信息之前,我首先选择订阅ID(缩写):

Select-AzureRmSubscription -SubscriptionId subidguid
$job = Get-AzureWebsiteJob -Name $webApp.Name

执行......

Select-AzureRmSubscription -Default -SubscriptionId subguidid

引发不同的错误:

  

Set-AzureRmContext:缺少参数的参数   ' DefaultProfile&#39 ;.指定类型的参数   ' Microsoft.Azure.Commands.Common.Authentication.Abstractions.IAzureContextContainer'   然后再试一次。

我尝试使用DefaultProfile参数代替Default。无论我使用Default传递什么,我都会收到错误:

  

Set-AzureRmContext:无法绑定参数' DefaultProfile'。不能   转换" WhatYouEntered" type" System.String"的值输入   " Microsoft.Azure.Commands.Common.Authentication.Abstractions.IAzureContextContainer"

我仍然得到同样的错误。当我查看Get-AzureWebsiteJob函数中允许的参数时,我没有看到指定订阅的选项。鉴于网络应用程序应该搜索作业,并且Web应用程序返回,为什么这里没有通过订阅ID找到它?

2 个答案:

答案 0 :(得分:1)

Get-AzureWebsiteJob是Azure服务管理PowerShell模块。

您需要使用Add-AzureAccount来使用以下cmdlet。

使用此选项来选择您的默认订阅:

Select-AzureSubscription -Default -SubscriptionName "My Production (Pay-As-You-Go)"

您也可以选择使用-SubscriptionId(和GUID)代替名称。

有关Select-AzureSubscription命令行开关的更多信息;输入Get-Help Select-AzureSubscription

如果这不起作用,请先尝试先运行,然后再选择订阅:

Add-AzureAccount 

有关详细信息,请参阅“No default subscription has been designated. Use Select-AzureSubscription -Default <subscriptionName> to set the default subscription”。

答案 1 :(得分:1)

目前,Azure经典网站已转移到Azure ARM模块,我们无法使用BaseEntity来获取网络作业。

ARM PowerShell Cmdlet中有直接等效项。

我们可以使用此命令列出网络应用作业:

Get-AzureWebsiteJob

以下是一个例子:

Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType microsoft.web/sites/<Webjob-type> -ApiVersion $Apiversion

enter image description here

我们也可以使用此命令启动或停止Web作业。

$Apiversion = "2015-08-01"
Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName jasonapp3 -ResourceType microsoft.web/sites/triggeredwebjobs -ApiVersion $Apiversion

删除webjob:

Invoke-AzureRmResourceAction -ApiVersion $Apiversion  -ResourceGroupName $ResourceGroupName -ResourceName $ResourceName -ResourceType microsoft.web/sites/<Webjob-type> -Action start/stop  -Force

希望这有帮助。