Azure WebApp-如何使用Powershell或API重新启动单个实例
我们正在运行一个包含3个实例的WebApp。我们希望在夜间分别重新启动这些实例。我正试图找到一个Powershell或REST API解决方案来与cron作业一起工作,但我只想到了重新启动整个WebApp的解决方案 我们知道重新启动它们的手动过程(下面的屏幕截图链接),但我们希望自动化该过程Azure WebApp-如何使用Powershell或API重新启动单个实例,powershell,azure,web-applications,azure-powershell,azure-web-app-service,Powershell,Azure,Web Applications,Azure Powershell,Azure Web App Service,我们正在运行一个包含3个实例的WebApp。我们希望在夜间分别重新启动这些实例。我正试图找到一个Powershell或REST API解决方案来与cron作业一起工作,但我只想到了重新启动整个WebApp的解决方案 我们知道重新启动它们的手动过程(下面的屏幕截图链接),但我们希望自动化该过程 如果您正在查看Windows Azure PowerShell cmdlet,您要使用的命令是Reset AzureRoleInstance()是的,您可以使用Azure Power Shell来执行此操作
如果您正在查看Windows Azure PowerShell cmdlet,您要使用的命令是Reset AzureRoleInstance()是的,您可以使用Azure Power Shell来执行此操作,请检查此项 根据您的描述,我建议您首先使用
getazurermresource
命令在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
}
}
}
}
}
这只支持ASM型号?@thuang这是一个错误的答案。它只适用于Azure云服务器(经典版),OP希望重新启动web应用程序实例。@胜宝水MSFT这是正确的a类应用程序服务instance@KentRozenberg这是可能的,你可以检查我的答案。太棒了,我已经测试过了。很高兴您能提供帮助,因为我的Azure支持工程师说没有办法这样做,所以我对此感到气馁。:)@如果我的答案有效,请别忘了接受它作为答案。