使用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'.
解决方法
修正
Set-AzAnalysisServicesServer的参数Set-AzAnalysisServicesServer不支持-FirewallConfig参数,需要直接传递防火墙规则和PowerBI服务启用状态。将调用该命令的行替换为:Set-AzAnalysisServicesServer -ResourceGroupName $rg -Name $asServerFullName -FirewallRule $ipRuleList -EnablePowerBIService $true -Tag $resourceGroupPolicy(如果不需要启用PowerBI服务,将
$true改为$false即可)修复单个IP规则的创建错误
在遍历egress IP的循环中,-RangeStart e -RangeEnd e是无效的,应该用变量$egress替换:$eIPRule = New-AzAnalysisServicesFirewallRule -FirewallRuleName $eIPRule -RangeStart $egress -RangeEnd $egress初始化规则列表避免字符串拼接
在$rules | % { $ipRuleList += $_ }之前,先声明$ipRuleList = @(),否则会导致规则被错误拼接为字符串而不是对象数组:$ipRuleList = @() $rules | % { $ipRuleList += $_ }
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

