Powershell 如何判断哪个Azure应用程序服务(网站)插槽是;主动的;?

Powershell 如何判断哪个Azure应用程序服务(网站)插槽是;主动的;?,powershell,azure,azure-web-app-service,Powershell,Azure,Azure Web App Service,我们有一个Azure应用程序服务(网站),它有一个名为offline的额外部署槽,我们希望在主网站脱机进行维护时使用该槽 我正在尝试编写一个PowerShell脚本,根据传递给脚本的参数,该脚本将在此脱机插槽和生产插槽之间切换,反之亦然。但是,在发生切换时,脚本还必须执行其他操作,因此了解当前“活动”的插槽非常重要 问题是我找不到一种方法来确定这一点。我正在使用资源管理器cmdlet(*-AzureRm*),尽管我可以调用: Get-AzureRmWebAppSlot -ResourceGrou

我们有一个Azure应用程序服务(网站),它有一个名为offline的额外部署槽,我们希望在主网站脱机进行维护时使用该槽

我正在尝试编写一个PowerShell脚本,根据传递给脚本的参数,该脚本将在此脱机插槽和生产插槽之间切换,反之亦然。但是,在发生切换时,脚本还必须执行其他操作,因此了解当前“活动”的插槽非常重要

问题是我找不到一种方法来确定这一点。我正在使用资源管理器cmdlet(
*-AzureRm*
),尽管我可以调用:

Get-AzureRmWebAppSlot -ResourceGroupName xxx -Name websitename -Slot offline
据我所知,它返回的对象中没有任何东西可以帮助我。对于
Get AzureRmWebApp
返回的对象,情况也是如此


由于似乎没有资源管理器cmdlet可用于此目的,我还可以使用其他技术吗?目前我所能想到的就是拥有一个只存在于离线站点上的特定网页,并通过查询live网站来检查该网页的存在:这应该告诉我哪个插槽当前处于活动状态。不过这似乎有点骇人。

您可以设置一个非插槽特定的应用程序设置来标识该应用程序。在进行交换时,它将与应用程序一起交换

例如,在生产槽上设置具有密钥AppVersion和值Production的应用程序设置,在脱机槽上设置具有相同密钥和值Production的应用程序设置

您可以通过PowerShell访问应用程序设置,如下所示:

(Get-AzureRmWebApp -ResourceGroupName your-resource-group -Name your-webapp).SiteConfig.AppSettings

要么我不完全清楚这一点,要么可能有点离谱,但websitename制作(后缀为-production)不总是“活动”的吗?如果web应用程序被称为foo,并且只有一个插槽被称为offline,那么将有两个域:foo.azurewebsites.net和foo-offline.azurewebsites.net。当两个插槽交换时,域保持不变,但其内容会切换,即访问foo.azurewebsites.net将显示先前在foo-offline.azurewebsites.net中的内容,反之亦然。AFAIK没有像foo-production.azurewebsites.net这样的东西(事实上,这会导致404主机找不到错误)。我想说的是,是的,foo.azurewebsites.net始终是“活动”站点,因为它是您向用户发布广告的域(尽管您可能会为公共站点使用自定义域)。该站点始终存在,并且始终可以通过相同的URL访问。但是,我需要能够以编程方式(通过PowerShell)确定当前部署到该域的内容。换句话说,如果我现在去foo.azurewebsites.net,我会得到现场的网站内容,还是离线的网站内容。对于其他阅读本文的人来说,重要的一点是,应用程序设置是不特定于插槽的,即,不绑定到插槽。