我正在尝试使用REST API和PowerShell检索Azure Service Bus队列/事件中心的长度和大小等指标
问题1: 我使用下面的代码来调用REST API。 虽然它确实返回响应,但值始终为空。 我尝试在ASM和ARM门户中创建队列和eventhub,结果相同
Invoke-RestMethod -Method GET -Uri https://management.core.windows.net/mysubscriberid/services/servicebus/Namespaces/maxsb2/Queues/maxqueue2/Metrics `
-CertificateThumbprint mycertthumbprint `
-Headers @{"x-ms-version" = "2015-08-01";'Content-Type'='application/json'}
输出如下所示,空值
Name : size
Unit : bytes
PrimaryAggregation : Max
Rollups : {@{TimeGrain=00:05:00; Retention=02:00:00; Values=}, @{TimeGrain=01:00:00; Retention=7.00:00:00; Values=}, @{TimeGrain=1.00:00:00; Retention=60.00:00:00;
Values=}, @{TimeGrain=7.00:00:00; Retention=730.00:00:00; Values=}}
DisplayName : Size
Name : length
Unit : Messages
PrimaryAggregation : Max
Rollups : {@{TimeGrain=00:05:00; Retention=02:00:00; Values=}, @{TimeGrain=01:00:00; Retention=7.00:00:00; Values=}, @{TimeGrain=1.00:00:00; Retention=60.00:00:00;
Values=}, @{TimeGrain=7.00:00:00; Retention=730.00:00:00; Values=}}
DisplayName : Length
PROBLEM2: 我遇到的第二个问题是使用过滤器关键字。
https://management.core.windows.net/mysubscriptionID/services/servicebus/Namespaces/MaxServiceBus/EventHubs/maxevent/Metrics/requests.total/Rollups/PT5M/Values?$filter=Timestamp%20le%20datetime'2017-05-19T21:00:00Z'
PowerShell将$ filter解释为变量并导致问题。我试过使用`来逃避,也尝试使用单/双引号但这些最终会引发误导性的身份验证错误。
如果我尝试使用以下语法来解决$ filter问题,
$uri = 'https://management.core.windows.net/{}/services/ServiceBus/Namespaces/maxeventhub/eventhubs/maxevent/Metrics/Rollups/P1D/Values/?$' + 'filter=Timestamp%20gt%20datetime' + '2017-04-09T00:00:00.0000000Z' + '&api-version=2015-08-01'
Invoke-RestMethod -Method GET -Uri $uri `
-Headers @{"Authorization" ="Bearer $($authv.access_token)";"x-ms-version" = "2015-08-01";'Content-Type'='application/json'} `
-CertificateThumbprint {}
我得到了一个不同的错误。 enter image description here
Invoke-RestMethod : Request to a downlevel service failed.
似乎auth工作正常,因为我现在得到响应,将证书上传到门户网站,只是值为null。 有什么想法吗?