无法使用Powershell Add-AzMetricAlertRuleV2创建警报

时间:2020-05-13 03:49:03

标签: azure powershell

我在这里遇到一个奇怪的问题。 我正在尝试使用Powershell为我的所有存储帐户创建单独的可用性警报。 我的代码是这个

$storageaccounts= get-azstorageaccount |get-azresource

$criteria = New-AzMetricAlertRuleV2Criteria -MetricName "Availability" `
-TimeAggregation average `
-Operator lessthan `
-Threshold 100

foreach ($storageaccount in $storageaccounts){
    Add-AzMetricAlertRuleV2 -Name "$storageaccount.Name availbility"  `
    -ResourceGroupName $RG.ResourceGroupName `
    -WindowSize 00:05:00 `
    -Frequency 00:01:00 `
    -Description "Catching storageaccount availbility" `
    -condition $criteria `
    -ActionGroup $action `
    -Severity 3 `
    -TargetResourceId "$storageaccount.resourceid"
}

但是我一直收到此错误

Add-AzMetricAlertRuleV2 : Exception type: ErrorResponseException, 
Message: Null/Empty, Code: Null, Status code:BadRequest, Reason phrase: Bad Request

我认为问题是由于

Add-AzMetricAlertRuleV2 -Name "$storageaccount.Name availbility"

如果将storageaccount.name放在双引号中,我会得到

Microsoft.Azure.Commands.ResourceManager.Cmdlets.SdkModels.PSResource.Name

我也尝试过

foreach ($storageaccount in $storageaccounts){
$sa=[string]$storageaccount.Name
Add-AzMetricAlertRuleV2 -Name "$sa availbility"  

但仍然给我同样的错误

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您使用的命令中有两个问题:

  1. 名称:您可以将名称传递为:"$($storageaccount.StorageAccountName) availbility"
  2. 资源ID:要传递的资源ID存储在存储帐户的属性“ id”中,而不是“ resourceId”中。

更新的代码:

Add-AzMetricAlertRuleV2 -Name "$($storageaccount.StorageAccountName) availbility"  `
-ResourceGroupName $RG.ResourceGroupName `
-WindowSize 00:05:00 `
-Frequency 00:01:00 `
-Description "Catching storageaccount availbility" `
-condition $criteria `
-ActionGroup $action `
-Severity 3 `
-TargetResourceId $storageaccount.id