Skip to content

Inconsistent URI encoding for Get-AzureRmResource and Set-AzureRmResource #5685

Open
@kwill-MSFT

Description

@kwill-MSFT

Description

Inconsistent URI encoding for Get-AzureRmResource and Set-AzureRmResource causes failures when working with App Service Certificates.

App Service Certificates use naming convention thumbprint#resourcegroup. The '#' is not always correctly encoded to %23, which causes the API call to fail with error:
MissingApiVersionParameter : The api-version query parameter (?api-version=) is required for all requests.

Script/Steps for Reproduction

These commands work:

$resource = Get-AzureRmResource -ResourceName "7AF95FD8301E759535D8C9BD6F7C61E7DD92833F#TranslatorAPI_RG-WestUSwebspace" -ResourceGroupName "TranslatorAPI_RG" -ResourceType "Microsoft.Web/certificates"
$resource = Get-AzureRmResource -ResourceId "/subscriptions/5857f4d2-3dce-4b96-ad95-677f764e7a67/resourceGroups/TranslatorAPI_RG/providers/Microsoft.Web/certificates/7AF95FD8301E759535D8C9BD6F7C61E7DD92833F%23TranslatorAPI_RG-WestUSwebspace"

Set-AzureRmResource -Tag @{Test="Done"} -ResourceId "/subscriptions/5857f4d2-3dce-4b96-ad95-677f764e7a67/resourceGroups/TranslatorAPI_RG/providers/Microsoft.Web/certificates/7AF95FD8301E759535D8C9BD6F7C61E7DD92833F%23TranslatorAPI_RG-WestUSwebspace"

These commands fail:

$resource = Get-AzureRmResource -ResourceId "/subscriptions/5857f4d2-3dce-4b96-ad95-677f764e7a67/resourceGroups/TranslatorAPI_RG/providers/Microsoft.Web/certificates/7AF95FD8301E759535D8C9BD6F7C61E7DD92833F#TranslatorAPI_RG-WestUSwebspace"

$resource = Get-AzureRmResource -ResourceName "7AF95FD8301E759535D8C9BD6F7C61E7DD92833F#TranslatorAPI_RG-WestUSwebspace" -ResourceGroupName "TranslatorAPI_RG" -ResourceType "Microsoft.Web/certificates"
$resource | Set-AzureRmResource -Tag @{Test="Done"}

Module Version

PS C:\Users\kwill> Get-Module -Name AzureRM.Resources -ListAvailable


    Directory: C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     5.4.0      AzureRM.Resources                   {Get-AzureRmProviderOperation, Remove-AzureRmRoleAssignmen...

Environment Data

PS C:\Users\kwill> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.16299.248
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.248
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Debug Output

PS C:\Users\kwill> $resource = Get-AzureRmResource -ResourceId "/subscriptions/5857f4d2-3dce-4b96-ad95-677f764e7a67/reso
urceGroups/TranslatorAPI_RG/providers/Microsoft.Web/certificates/7AF95FD8301E759535D8C9BD6F7C61E7DD92833F#TranslatorAPI_
RG-WestUSwebspace"
DEBUG: 3:10:09 PM - GetAzureResourceCmdlet begin processing with ParameterSet 'GetByResourceId'.
DEBUG: ============================ HTTP REQUEST ============================

HTTP Method:
GET

Absolute Uri:
https://management.azure.com/subscriptions/5857f4d2-3dce-4b96-ad95-677f764e7a67/resourceGroups/TranslatorAPI_RG/provide
rs/Microsoft.Web/certificates/7AF95FD8301E759535D8C9BD6F7C61E7DD92833F#TranslatorAPI_RG-WestUSwebspace?api-version=2016
-03-01

Headers:
User-Agent                    : AzurePowershell/v5.4.0,PSVersion/v5.1.16299.248
ParameterSetName              : GetByResourceId
CommandName                   : Get-AzureRmResource

Body:


DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
BadRequest

Headers:
Pragma                        : no-cache
x-ms-failure-cause            : gateway
x-ms-request-id               : 88751f00-2379-43a4-91a3-d45521b16882
x-ms-correlation-request-id   : 88751f00-2379-43a4-91a3-d45521b16882
x-ms-routing-request-id       : WESTUS2:20180306T211010Z:88751f00-2379-43a4-91a3-d45521b16882
Strict-Transport-Security     : max-age=31536000; includeSubDomains
X-Content-Type-Options        : nosniff
Cache-Control                 : no-cache
Date                          : Tue, 06 Mar 2018 21:10:09 GMT

Body:
{
  "error": {
    "code": "MissingApiVersionParameter",
    "message": "The api-version query parameter (?api-version=) is required for all requests."
  }
}

Get-AzureRmResource : MissingApiVersionParameter : The api-version query parameter (?api-version=) is required for all
requests.
At line:1 char:13
+ $resource = Get-AzureRmResource -ResourceId "/subscriptions/5857f4d2- ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzureRmResource], ErrorResponseMessageException
    + FullyQualifiedErrorId : MissingApiVersionParameter,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementati
   on.GetAzureResourceCmdlet

Metadata

Metadata

Labels

ARMARM - CoreARM - Core TriagedService AttentionThis issue is responsible by Azure service team.questionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions