gpt4 book ai didi

powershell - Azure WebApp - 如何使用 Powershell 或 API 重新启动单个实例

转载 作者:行者123 更新时间:2023-12-03 01:05:31 26 4
gpt4 key购买 nike

我们正在运行一个具有 3 个实例的 Web 应用程序。我们希望在晚上单独重新启动这些实例。我试图找到一个 Powershell 或 REST API 解决方案来与 cron 作业配合使用,但我只是想出重新启动整个 WebApp 的解决方案。

我们知道重新启动它们的手动过程(下面的屏幕截图链接),但我们希望自动化该过程。

Screenshot link.jpg

最佳答案

是的,您可以使用 Azure Power Shell 来执行此操作,请检查此 answer .

根据您的描述,我建议您首先使用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
}
}
}

}
}

关于powershell - Azure WebApp - 如何使用 Powershell 或 API 重新启动单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49369763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com