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

使用PowerShell配置Azure Analysis Services防火墙遇参数错误求助

Azure Analysis Services防火墙配置PowerShell报错:找不到'FirewallConfig'参数

我编写了两个PowerShell函数:一个从指定域名解析获取IP地址,另一个尝试将这些IP添加到Azure Analysis Services(AS)防火墙规则中。通过New-AzAnalysisServicesFirewallRule创建规则,New-AzAnalysisServicesFirewallConfig生成配置,但调用Set-AzAnalysisServicesServer时出现错误,提示找不到匹配的参数名'FirewallConfig'。

相关代码

获取IP的函数

function getIPAddress() {
    $egressName = "xyz." + $envName + ".abc.com"  
    $response = Resolve-DnsName $egressName 

    $ips = @()
    foreach($ip in $response.IPAddress) {        
        $block = New-Object PsObject -Property @{description=$egressName; IPAddress=$ip}
        $ips+=$block
    }

    $ips = $ips | Sort-Object description, IPAddress

    return $ips.IPAddress  
}

防火墙配置函数

function firewallAccessFunction {
    $rules = @()  
    $egressIpAddresses = getIPAddressFromEgress;
    Write-Host "Ip Address Generated from egress: $($egressIpAddresses[0])"
    if ($envName -eq "dev") {
        $rule4 = New-AzAnalysisServicesFirewallRule -FirewallRuleName "a" -RangeStart 1.1.1.1 -RangeEnd 2.2.2.2
        $rule5 = New-AzAnalysisServicesFirewallRule -FirewallRuleName "b" -RangeStart 1.1.1.1 -RangeEnd 2.2.2.2
                                          
        $rules = $rule4, $rule5         

        Write-Host "Adding egress IP Addresses to firewall: " 
        $counter = 1
        foreach ($egress in $egressIpAddresses) {

            Write-Host "Adding IP $($egress) into AS firewall"
            $egressIPRule = "eIPRule"
            $eIPRule += $counter
            $eIPRule = New-AzAnalysisServicesFirewallRule -FirewallRuleName $eIPRule -RangeStart e -RangeEnd e
            $rules += $eIPRule
            $counter += 1
        }
                                
        if ($vmIP -ne "0.0.0.0") {
            Write-Host "Added VM $vmIP to AS Firewall"
            $ruleVM = New-AzAnalysisServicesFirewallRule -FirewallRuleName "VM" -RangeStart $vmIP -RangeEnd $vmIP
            $rules += $ruleVM
        }
        $rules | % {
            $ipRuleList += $_
        }
        $ipRuleList = addRefreshIp $ipRuleList $envName
        $config = New-AzAnalysisServicesFirewallConfig -EnablePowerBIService -FirewallRule $ipRuleList

    } 

    "Set-AzAnalysisServicesServer:" + $asServerFullName + "; RG:" + $rg
    Write-Host "Config Variable: $($config)"
    Set-AzAnalysisServicesServer -ResourceGroupName $rg -Name $asServerFullName -FirewallConfig $config -Tag $resourceGroupPolicy
}

错误信息

Set-AzAnalysisServicesServer: 
ResourceGroupName $rg -Name $asServerFullName -FirewallConfig $config ...
A parameter cannot be found that matches parameter name 'FirewallConfig'.

解决方法

  1. 修正Set-AzAnalysisServicesServer的参数
    Set-AzAnalysisServicesServer不支持-FirewallConfig参数,需要直接传递防火墙规则和PowerBI服务启用状态。将调用该命令的行替换为:

    Set-AzAnalysisServicesServer -ResourceGroupName $rg -Name $asServerFullName -FirewallRule $ipRuleList -EnablePowerBIService $true -Tag $resourceGroupPolicy
    

    (如果不需要启用PowerBI服务,将$true改为$false即可)

  2. 修复单个IP规则的创建错误
    在遍历egress IP的循环中,-RangeStart e -RangeEnd e是无效的,应该用变量$egress替换:

    $eIPRule = New-AzAnalysisServicesFirewallRule -FirewallRuleName $eIPRule -RangeStart $egress -RangeEnd $egress
    
  3. 初始化规则列表避免字符串拼接
    在$rules | % { $ipRuleList += $_ }之前,先声明$ipRuleList = @(),否则会导致规则被错误拼接为字符串而不是对象数组:

    $ipRuleList = @()
    $rules | % {
        $ipRuleList += $_
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:46:34