【问题标题】:Set-AzureRmWebApp changes in Powershell not appearing in Azure PortalPowershell 中的 Set-AzureRmWebApp 更改未出现在 Azure 门户中
【发布时间】:2017-08-30 01:47:43
【问题描述】:

我正在尝试通过 Powershell 将虚拟应用程序添加到 Azure 网站。尽管脚本运行时没有错误,但我的更改并未出现在 portal.azure.com 中。最后是否需要运行另一个命令来持久化更改?

$subscriptionId = "secret"
$websiteName = "MyWebsite"
$resourceGroupName = "MyResourceGroup"
$siteName = "Test"

Get-Module AzureRM
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId $subscriptionId
$website = Get-AzureRmWebApp -Name $websiteName -ResourceGroupName $resourceGroupName
$VDApp = New-Object Microsoft.Azure.Management.WebSites.Models.VirtualApplication
$VDApp.VirtualPath = "/$siteName"
$VDApp.PhysicalPath = "site\$siteName"
$VDApp.PreloadEnabled ="YES"
$website.siteconfig.VirtualApplications.Add($VDApp)
$website | Set-AzureRmWebApp -ResourceGroupName $resourceGroupName

【问题讨论】:

    标签: azure azure-web-app-service azure-powershell


    【解决方案1】:

    尝试使用以下命令添加虚拟应用程序。

    $resourceGroupName = ""
    $websiteName = ""
    $WebAppApiVersion = "2015-08-01"
    # Example call: SetWebAppConfig MyResourceGroup MySite $ConfigObject
    Function SetWebAppConfig($ResourceGroupName, $websiteName, $ConfigObject)
    {
        Set-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/Config -Name $websiteName/web -PropertyObject $ConfigObject -ApiVersion $WebAppApiVersion -Force
    }
    Write-Host "Set a virtual application"
    $props=@{
        virtualApplications = @(
            @{ virtualPath = "/"; physicalPath = "site\wwwroot" },
            @{ virtualPath = "/bar"; physicalPath = "site\wwwroot" }
        )
    }
    SetWebAppConfig $ResourceGroupName $websiteName $props
    

    我在我的实验室进行测试,它对我有用。

    有关此的更多信息,请参阅 herehere

    【讨论】:

    • 这似乎可行,但我需要附加一个虚拟应用程序,而不是替换现有的应用程序。我试图附加到 Get-AzureRmWebApp 的结果,但仍然得到“缺少默认应用程序'/'。
    • 我想通了;请参阅下面的答案。感谢您的指导!
    【解决方案2】:

    以 Walter 的回答为基础使其工作。要将新的虚拟应用程序附加到现有应用程序,请运行以下代码:

    # Example call: SetWebAppConfig MyResourceGroup MySite $ConfigObject
    # https://github.com/davidebbo/AzureWebsitesSamples/blob/b2a3d67a90b7b2d673d68dab553f82e015333d10/PowerShell/HelperFunctions.ps1#L84-L87
    Function SetWebAppConfig($ResourceGroupName, $SiteName, $ConfigObject)
    {
        $WebAppApiVersion = "2015-08-01"
        Set-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/Config -Name $SiteName/web -PropertyObject $ConfigObject -ApiVersion $WebAppApiVersion -Force
    }
    
    Login-AzureRmAccount
    Select-AzureRmSubscription -SubscriptionId $subscriptionId
    
    $website = Get-AzureRmWebApp -ResourceGroupName $resourceGroupName -Name $websiteName
    $virtualApplications = $website.SiteConfig.VirtualApplications
    
    $hash = New-Object System.Collections.ArrayList
    
    for ($j = 0; $j -lt $virtualApplications.count; $j++) {
        $entry = @{ virtualPath = $virtualApplications[$j].VirtualPath; physicalPath = $virtualApplications[$j].PhysicalPath }
        $hash.add($entry)
    }
    $newEntry = @{ virtualPath = "/$siteName"; physicalPath = "site\$siteName" }
    $hash.add($newEntry)
    
    
    $hashProps.VirtualApplications
    $virtualApps = $website.SiteConfig.VirtualApplications.Add(@{ virtualPath = "/$siteName"; physicalPath = "site\$siteName" })
    $props=@{
        virtualApplications = $hash.ToArray()
    }
    
    SetWebAppConfig $resourceGroupName $websiteName $props
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多