gpt4 book ai didi

azure - 我可以按计划自动启动和停止 azure 网站吗?

转载 作者:行者123 更新时间:2023-12-03 21:56:30 25 4
gpt4 key购买 nike

即使问这个问题,我也想知道如此简单的事情对我来说怎么会如此困难。我想要做的就是按计划自动停止和启动 Azure 网站。首先,我查看了 WebJobs,并创建了一个 powershell 脚本,该脚本将停止使用 stop-azurewebsite commandlet 的网站:

stop-azurewebsite [my site]

然后我创建了一个 .cmd 文件来使用 powershell.exe 调用它来执行 powershell 文件

PowerShell.exe -ExecutionPolicy RemoteSigned -File stopit.ps1

我创建了一个 WebJob 来运行 powershell 命令来停止该网站,但它出错并显示一条消息:

stop-azurewebsite : The term 'stop-azurewebsite' is not recognized as the name 
of a cmdlet, function, script file, or operable program. Check the spelling of
the name, or if a path was included, verify that the path is correct and try
again.

所以,我想我应该走 REST API 路线。我使用 fiddler 和正确的管理证书创建了一个发布请求来调用:

https://management.core.windows.net/[my subscription id]/services/WebSpaces/[webspace]/sites/[website name]/stop

事实证明,没有“停止”命令。有“重新启动”,但在这种情况下这显然没有用。综上所述,什么是按特定时间计划自动停止和随后(但要晚得多)启动 Azure 网站的合理方法?

更新:

我已经弄清楚如何使用 PUT 发出 http 请求来停止网站

https://management.core.windows.net/[我的订阅 id]/services/WebSpaces/[webspace]/sites/[网站名称],正文为 { "State":"Stopped"},但我仍然没有明显的方法在 WebJob 中“PUT”到此 URL。

最佳答案

使用 Azure 自动化,创建 Runbook 并添加以下代码以获取所有“正在运行”的网站/Web 应用程序并将其关闭。

# Get Websites/webapps
$websites = Get-AzureWebsite | where-object -FilterScript{$_.state -eq 'Running' }

# Stop each website
foreach -parallel ($website In $websites)
{
$result = Stop-AzureWebsite $website.Name
if($result)
{
Write-Output "- $($website.Name) did not shutdown successfully"
}
else
{
Write-Output "+ $($website.Name) shutdown successfully"
}
}

发布 Runbook,您应该能够直接在 Azure 门户中安排它。确保您的自动用户已通过身份验证,并且在运行中选择了您的订阅,并且应该不会有任何问题。

类似地,启动所有网站/网络应用程序只需将“正在运行”更改为“已停止”,并将“Stop-AzureWebsite”更改为“Start-AzureWebsite”。

关于azure - 我可以按计划自动启动和停止 azure 网站吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100669/

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