有谁能帮我通过VST停止和启动azure webjobs吗?

有谁能帮我通过VST停止和启动azure webjobs吗?,azure,azure-devops,Azure,Azure Devops,我在VSTS中找到了一个插件azure应用程序服务webjob start,但我无法启动/停止webjob。请帮助我。在VSTS中运行任务时,我遇到以下错误 错误: 2017-09-25T12:26:37.3203696Z Preparing task execution handler. 2017-09-25T12:26:43.2660796Z Executing the powershell script: d:\a\_tasks\Start_cbebb02b-11c6-4e24-b5a

我在VSTS中找到了一个插件azure应用程序服务webjob start,但我无法启动/停止webjob。请帮助我。在VSTS中运行任务时,我遇到以下错误

错误:

2017-09-25T12:26:37.3203696Z Preparing task execution handler.
2017-09-25T12:26:43.2660796Z Executing the powershell script: 
 d:\a\_tasks\Start_cbebb02b-11c6-4e24-b5a8-0b51366d51b7\0.2.5\Start.ps1
2017-09-25T12:26:43.6830868Z ##
[error]System.Management.Automation.ParentContainsErrorRecordException: At 
D:\a\_tasks\Start_cbebb02b-11c6-4e24-b5a8-0b51366d51b7\0.2.5\Start.ps1:13 
char:16
2017-09-25T12:26:43.6830868Z +     $WebAppName
2017-09-25T12:26:43.6830868Z +                ~
2017-09-25T12:26:43.6830868Z Missing ')' in function parameter list.
2017-09-25T12:26:43.6830868Z 
2017-09-25T12:26:43.6830868Z At D:\a\_tasks\Start_cbebb02b-11c6-4e24-b5a8-
0b51366d51b7\0.2.5\Start.ps1:17 char:1
2017-09-25T12:26:43.6830868Z + )
2017-09-25T12:26:43.6830868Z + ~
2017-09-25T12:26:43.6830868Z Unexpected token ')' in expression or 
statement.

使用
调用AzureRMResourceAction
命令:

  • 将Azure PowerShell任务添加到生成/发布定义
  • 代码:

    触发的Web作业:

    Invoke-AzureRmResourceAction -ResourceGroupName XXX -ResourceType Microsoft.Web/sites/TriggeredWebJobs -ResourceName [web app name]/[web job name] -Action run -ApiVersion 2015-08-01 -force
    
    连续网络作业:

    Invoke-AzureRmResourceAction -ResourceGroupName XXX -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName [web app name]/[web job name] -Action [start/stop] -ApiVersion 2015-08-01 -Force
    
    包含多个WebJob的简单示例脚本:

    param(
        [object[]]$webjobs,
        [string]$website,
        [string]$rg
    )
    foreach($wj in $webjobs){
     if($wj.typeName -eq "continuous")
     {
     Invoke-AzureRmResourceAction -ResourceGroupName $rg -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$website/$($wj.name)" -Action start -ApiVersion 2015-08-01 -Force
     }
     else{
      Invoke-AzureRmResourceAction -ResourceGroupName $rg -ResourceType Microsoft.Web/sites/TriggeredWebJobs -ResourceName "$website/$($wj.name)" -Action run -ApiVersion 2015-08-01 -force
     }
    }
    
    指定参数:

    -webjobs @(@{"name"="webjob1";"typeName"='continuous'},@{"name"="webjob2";"typeName"='continuous'},@{"name"="webjob3";"typeName"='triggered '}) -website XX -rg XX
    
    publicstaticstringtoken=System.Configuration.ConfigurationManager.AppSettings[“token”];
    公共静态字符串continuouswebjobs=System.Configuration.ConfigurationManager.AppSettings[“continuouswebjobs”];
    公共静态字符串triggeredwebjobs=System.Configuration.ConfigurationManager.AppSettings[“triggeredwebjobs”];
    公共静态字符串主机名=System.Configuration.ConfigurationManager.AppSettings[“DLUHostName”];
    公共静态void StopContinuousWebJob(TextWriter日志)
    {
    HttpClient请求=新建HttpClient();
    request.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“text/plain”);
    request.DefaultRequestHeaders.Add(“授权”,令牌);
    如果(!string.IsNullOrEmpty(continuouswebjobs))
    {
    字符串[]jobsArray=continuouswebjobs.Split(',');
    for(int i=0;i
    首先,ResourceGroupName不正确(“/”无效),请在azure门户中检查它。其次,资源类型不正确,它应该是Microsoft.Web/sites/TriggeredWebJob或Microsoft.Web/sites/ContinuousWebJobs。另一方面,您的网络工作名叫webjobname吗?非常感谢您对MSFT的帮助。它现在运行得很好。非常感谢。嗨,MSFT,我有10个连续的和10个触发的webjobs,所以我如何构建代码。目前我正在运行您提供的脚本。调用AzureRmResourceAction-ResourceGroupName XXX-ResourceType Microsoft.Web/sites/TriggeredWebJobs-ResourceName[Web应用程序名称]/[Web作业名称]-操作运行-ApiVersion 2015-08-01-force…,因此我想停止/启动多个webjob,而我的azure power shell任务不支持超过5行为每个webjob单独运行此命令。因此,请帮助我。您可以通过参数传递它们并迭代数组,检查我的答案的更新。您能告诉我在哪里以及如何包括此步骤吗?因为我只运行以下命令:Invoke AzureRmResourceAction-ResourceGroupName XXX-ResourceType Microsoft.Web/sites/ContinuousWebJobs-ResourceName[Web app name]/[Web job name]-Action[启动/停止]-ApiVersion 2015-08-01-Force…那么我如何关联您现在提供的上述脚本。我有azure powershell插件,我可以看到2个步骤:1.内联脚本2.脚本参数。因此,请帮助我,朋友,因为我是powershell脚本的新手。因此,请询问疑问。是否可以共享您的邮件ID或联系人,以便我可以联系到您p租约?请帮助我,朋友,我如何包括您提供的上述脚本,以及如何使用该脚本停止所有web作业。@PDBRPRAVEEN您不清楚哪一点?我更新脚本。如果PowerShell脚本太长,您可以尝试删除空白,或者您可以使用文件路径类型并指定PowerShell脚本文件。R真的很感谢你…现在成功了..好家伙..非常感谢你在这些方面对我的帮助..您好,MSFT,我收到了团队的要求,比如,目前他们正在通过设置时间表以特定的时间间隔运行触发的作业。他们已经设置了时间表,因此根据计划的时间,这些触发的作业将运行,但在部署时我们必须确保触发的作业不应该运行,因为它不会接受将jar部署到azure中。因此,我想运行webjobs连续作业停止,以及触发的作业不应该运行。它应该在部署时检查触发的作业是否在运行,即使停止连续作业,我们也无法部署jar。请帮助我。请,将您的代码格式化为代码(这实际上是不可能遵循的),并包括更多的解释。
            public static string token = System.Configuration.ConfigurationManager.AppSettings["token"];
            public static string continuouswebjobs = System.Configuration.ConfigurationManager.AppSettings["continuouswebjobs"];
            public static string triggeredwebjobs = System.Configuration.ConfigurationManager.AppSettings["triggeredwebjobs"];
            public static string hostName = System.Configuration.ConfigurationManager.AppSettings["DLUHostName"];
    
            public static void StopContinuousWebJob(TextWriter log)
            {
                HttpClient request = new HttpClient();
                request.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
                request.DefaultRequestHeaders.Add("Authorization", token);
                if (!string.IsNullOrEmpty(continuouswebjobs))
                {
                    string[] jobsArray = continuouswebjobs.Split(',');
                    for (int i = 0; i < jobsArray.Length; i++)
                    {
                        HttpResponseMessage response = request.PostAsync(new Uri(hostName + "continuouswebjobs/" + jobsArray[i] + "/stop"), null).Result;
                        if (response.StatusCode == HttpStatusCode.OK)
                        {
                            Console.WriteLine("Job " + jobsArray[i] + " stopped  successfully.");
                        }
                    }
                }
            }