0

我想为所有 azure app 服务实例调用 url 列表

调用-WebRequest -UseBasicParsing -uri $url -Method Get

使用此命令,它将不适用于多个 Web 应用程序实例

我尝试了以下脚本,它运行并显示所有实例和网站状态的资源 ID 200 OK

  $webSiteInstances = Get-AzureRmResource -ResourceGroupName $rg -ResourceType 

  Microsoft.Web/sites/instances -Name $webapp -ApiVersion 2016-03-01

 foreach ($instance in $webSiteInstances)
 {
 $instanceId = $instance.Name

"Going to enumerate all processes on {0} instance" -f $instanceId

$processList =  Get-AzureRmResource -ApiVersion 2016-03-01 -ResourceId $resourceID

foreach ($process in $processList){
    Invoke-WebRequest -UseBasicParsing -uri $url -Method Get
}

}

问题是我不确定它是否真的为每个实例运行,如果不是,我该怎么做?

4

1 回答 1

1

要请求您的 Web 应用程序的特定实例,您需要在请求中添加一个 cookie 以通过ARRAffinity使用实例名称设置 cookie 来针对特定实例,请参见此处

所以你的脚本应该如下所示,它在我这边运行良好。

$groupname = "xxxxxx"
$webappname = "joyweba"
$url = "https://joyweba.azurewebsites.net"

$webSiteInstances = Get-AzureRmResource -ResourceGroupName $groupname -ResourceType Microsoft.Web/sites/instances -Name $webappname -ApiVersion 2016-03-01

foreach ($instance in $webSiteInstances)
{
    $instanceId = $instance.Name

    "Going to enumerate all processes on {0} instance" -f $instanceId

    $s = New-Object Microsoft.PowerShell.Commands.WebRequestSession
    $c = New-Object System.Net.Cookie('ARRAffinity',$instanceId,'/',"$webappname.azurewebsites.net")
    $s.Cookies.Add($c)

    Invoke-WebRequest -UseBasicParsing -Method Get -Uri $url -WebSession $s
}

在此处输入图像描述

我的网络应用程序中有三个实例,如果您通过 fiddler 捕获请求,那就更清楚了。

在此处输入图像描述

于 2020-07-16T08:11:45.687 回答