使 Invoke-AzureRmResourceAction 与暂存槽一起使用

Make Invoke-AzureRmResourceAction to work with staging slot

我正在尝试按照 Deploying a WebJob using PowerShell ARM Cmdlets 直接部署 azure webjob。它工作正常。我需要对 PowerShell 脚本进行哪些更改才能部署到插槽?我尝试了一些东西但出现了错误。

PS C:\Users\Venkatesh> Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -ResourceType "Microsoft.Web/sites/config" -ResourceName "WebSiteName/publishingcredentials" -Action list -ApiVersion "2016-08-01" -Force
Invoke-AzureRmResourceAction : ResourceNotFound : The Resource 'Microsoft.Web/sites/WebSiteName' under resource group 'Venky' was not found.
At line:1 char:1
+ Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -Re ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Invoke-AzureRmResourceAction], ErrorResponseMessageException
    + FullyQualifiedErrorId : ResourceNotFound,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.InvokAzureResourceActionCmdlet


PS C:\Users\Venkatesh> Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -ResourceType "Microsoft.Web/sites/config" -ResourceName "WebSiteName/staging/publishingcredentials" -Action list -ApiVersion "2016-08-01" -Force
Invoke-AzureRmResourceAction : 
At line:1 char:1
+ Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -Re ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Invoke-AzureRmResourceAction], ErrorResponseMessageException
    + FullyQualifiedErrorId : NotFound,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.InvokAzureResourceActionCmdlet



PS C:\Users\Venkatesh> Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -ResourceType "Microsoft.Web/sites/config" -ResourceName "WebSiteName/slots/staging/publishingcredentials" -Action list -ApiVersion "2016-08-01" -Force
Invoke-AzureRmResourceAction : 
At line:1 char:1
+ Invoke-AzureRmResourceAction -ResourceGroupName "Venky" -Re ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Invoke-AzureRmResourceAction], ErrorResponseMessageException
    + FullyQualifiedErrorId : NotFound,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.InvokAzureResourceActionCmdlet

资源类型应为 Microsoft.Web/sites/slots/config,资源名称应为 <app name>/<slot name>/publishingcredentials

例如:

Invoke-AzureRmResourceAction -ResourceGroupName shuiapp -ResourceType Microsoft.Web/sites/slots/config -ResourceName shuicli/shuislot/publishingcredentials -Action list -ApiVersion "2016-08-01" -Force

您可以按如下方式修改您的脚本:

#Resource details :
$resourceGroupName = "";
$webAppName = "";
$slotname = ""
$Apiversion = "2015-08-01"

#Function to get Publishing credentials for the WebApp :
function Get-PublishingProfileCredentials($resourceGroupName, $webAppName, $slotname){

$resourceType = "Microsoft.Web/sites/slots/config"
$resourceName = "$webAppName/$slotname/publishingcredentials"
$publishingCredentials = Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroupName -ResourceType $resourceType -ResourceName $resourceName -Action list -ApiVersion $Apiversion -Force
return $publishingCredentials
}

#Pulling authorization access token :
function Get-KuduApiAuthorisationHeaderValue($resourceGroupName, $webAppName, $slotnmae){

$publishingCredentials = Get-PublishingProfileCredentials $resourceGroupName $webAppName $slotname
return ("Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f 
$publishingCredentials.Properties.PublishingUserName, $publishingCredentials.Properties.PublishingPassword))))
}

$accessToken = Get-KuduApiAuthorisationHeaderValue $resourceGroupName $webAppname $slotname
#Generating header to create and publish the Webjob :
$Header = @{
'Content-Disposition'='attachment; attachment; filename=Copy.zip'
'Authorization'=$accessToken
        }