You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Firewall PowerShell添加规则报错:找不到Add方法重载

解决Azure Firewall策略中添加网络规则的Add方法错误

我尝试在Azure Firewall中添加一条规则,已有Azure防火墙策略,其中创建了网络规则集合并添加了若干规则,希望在同一个网络规则集合中再添加一条规则,使用的脚本如下:

$rule = New-AzFirewallNetworkRule -Name "AllowAzureDevOps" -Description "Allow access to Azure Devops" -SourceAddress "10.0.0.0/16" -DestinationAddress AzureDevOps -DestinationPort 443 -Protocol TCP

$policy = Get-AzFirewallPolicy -Name "fw-policy" -ResourceGroupName "fw-rg"

$networkrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "DefaultNetworkRuleCollectionGroup" -ResourceGroupName "fw-rg" -AzureFirewallPolicyName "fw-pol"

$existingrulecollection = $networkrulecollectiongroup.Properties.RuleCollection | where {$_.Name -eq "NetworkRuleCollection"}

$existingrulecollection.Rules.Add($rule)

执行脚本中$existingrulecollection.Rules.Add($rule)语句时出现错误,报错信息如下:

PS C:\Users\mkumar480> $existingrulecollection.Rules.Add($rule)

找不到匹配参数计数为“1”的“Add”重载。位于 行:1 字符:1

  • $existingrulecollection.Rules.Add($rule)
  • + CategoryInfo          : NotSpecified: (:) [], MethodException
      + FullyQualifiedErrorId : MethodCountCouldNotFindBest
    

问题原因

$existingrulecollection.Rules返回的是只读的固定大小集合,不支持直接调用Add方法添加元素,这就是报错的核心原因。

修正后的脚本

需要先将现有规则转换为可修改的列表,添加新规则后重新赋值,最后更新防火墙策略和规则集合组:

# 1. 创建新的网络规则
$rule = New-AzFirewallNetworkRule -Name "AllowAzureDevOps" -Description "Allow access to Azure Devops" -SourceAddress "10.0.0.0/16" -DestinationAddress AzureDevOps -DestinationPort 443 -Protocol TCP

# 2. 获取防火墙策略和规则集合组
$policy = Get-AzFirewallPolicy -Name "fw-policy" -ResourceGroupName "fw-rg"
$networkrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "DefaultNetworkRuleCollectionGroup" -ResourceGroupName "fw-rg" -AzureFirewallPolicyName "fw-pol"

# 3. 定位目标网络规则集合
$existingrulecollection = $networkrulecollectiongroup.Properties.RuleCollection | Where-Object {$_.Name -eq "NetworkRuleCollection"}

# 4. 将现有规则转为可修改的列表,添加新规则
$updatedRules = [System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSAzureFirewallNetworkRule]]$existingrulecollection.Rules
$updatedRules.Add($rule)

# 5. 重新赋值规则集合,并更新规则集合组和防火墙策略
$existingrulecollection.Rules = $updatedRules
Set-AzFirewallPolicyRuleCollectionGroup -InputObject $networkrulecollectiongroup
Set-AzFirewallPolicy -InputObject $policy

内容的提问来源于stack exchange,提问作者Manish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:06:24