2017-05-05 42 views
1

Restart-Azure Rm Web App PowerShellを使用してWebアプリケーションを再起動することはできますが、これにより計画内のすべてのサーバーが同時に再起動されるため、 。Azure Webアプリケーションで高度なアプリケーションを再起動するPowershell

Azureポータルには、個々のインスタンスを再起動するまでの時間遅延を使用する「高度なアプリケーションの再起動」機能があります。

これをPowerShellから呼び出す方法はありますか?

+0

どれ更新あなたは私の答えは参考になりまし/便利であると感じた場合。それを他の人々が恩恵を受けることができるように答えとしてマークしてください。 –

答えて

0

説明によると、Get-AzureRmResourceコマンドを使用して、まず各インスタンスのプロセスをWebアプリケーションで見つけることができます。その後、Remove-AzureRmResourceを使用してこれらのプロセスを停止できます。次に、あなたがAzure Webアプリケーションにアクセスすると、Azureは自動的に新しいインスタンスのプロセスを作成してアプリケーションを実行します。

詳細は、PowerShellのコード以下を参照してください可能性:

Login-AzureRmAccount 
Select-AzureRmSubscription -SubscriptionId '{your subscriptionid}' 

$siteName = "{sitename}" 
$rgGroup = "{groupname}" 

$webSiteInstances = @() 

#This gives you list of instances 
$webSiteInstances = Get-AzureRmResource -ResourceGroupName $rgGroup -ResourceType Microsoft.Web/sites/instances -ResourceName $siteName -ApiVersion 2015-11-01 

$sub = (Get-AzureRmContext).Subscription.SubscriptionId 

foreach ($instance in $webSiteInstances) 
{ 
    $instanceId = $instance.Name 
    "Going to enumerate all processes on {0} instance" -f $instanceId 

    # This gives you list of processes running 
    # on a particular instance 
    $processList = Get-AzureRmResource ` 
        -ResourceId /subscriptions/$sub/resourceGroups/$rgGroup/providers/Microsoft.Web/sites/$sitename/instances/$instanceId/processes ` 
        -ApiVersion 2015-08-01 

    foreach ($process in $processList) 
    {    
     if ($process.Properties.Name -eq "w3wp") 
     {    
      $resourceId = "/subscriptions/$sub/resourceGroups/$rgGroup/providers/Microsoft.Web/sites/$sitename/instances/$instanceId/processes/" + $process.Properties.Id    
      $processInfoJson = Get-AzureRmResource -ResourceId $resourceId -ApiVersion 2015-08-01          

      # is_scm_site is a property which is set 
      # on the worker process for the KUDU 

       $computerName = $processInfoJson.Properties.Environment_variables.COMPUTERNAME 

       if ($processInfoJson.Properties.is_scm_site -ne $true) 
      { 
       $computerName = $processInfoJson.Properties.Environment_variables.COMPUTERNAME 
       "Instance ID" + $instanceId + "is for " + $computerName 

       "Going to stop this process " + $processInfoJson.Name + " with PID " + $processInfoJson.Properties.Id 

       # Remove-AzureRMResource finally STOPS the worker process 
       $result = Remove-AzureRmResource -ResourceId $resourceId -ApiVersion 2015-08-01 -Force 

       if ($result -eq $true) 
       { 
        "Process {0} stopped " -f $processInfoJson.Properties.Id 
       } 
      }  
     } 

    } 
} 

結果:? enter image description here

+0

これは、アプローチの良い、実行可能な実装です。うまくいけば、それはRestart-Azure Rm Web Appコマンドレットのオプションになることが望ましいでしょう。 –

関連する問題