I'm scripting some configuration of Azure Analysis Service, and more specifically the firewall. The cmdlet
New-AzAnalysisServicesFirewallConfig -FirewallRule
takes in the rules created as a parameter; $rule1
as an example.
I want the script to be able to take a varying number of parameters to that command. Instead of having to hardcode it to X number of rules like in the example with 6 rules.
I tried to create an Array and a Hashtable containing the X number of parameters, but it's unable to convert them.
$FirewallRules | ForEach-Object {
$ruleNumberVar = "rule" + "$ruleNumberIndex"
if (!($_.FirewallRuleName -match "$ExistingFirewallRuleName")) {
$start = $_.RangeStart
$end = $_.RangeEnd
$tempRule = New-AzAnalysisServicesFirewallRule `
-FirewallRuleName $_.FirewallRuleName `
-RangeStart $start `
-RangeEnd $end
Set-Variable -Name "$ruleNumberVar" -Value $tempRule
$ruleNumberIndex = $ruleNumberIndex + 1
}
$conf = New-AzAnalysisServicesFirewallConfig -FirewallRule $rule1,$rule2,$rule3,$rule4,$rule5,$rule6
Getting this error:
New-AzAnalysisServicesFirewallConfig : Cannot bind parameter 'FirewallRule'. Cannot convert the "System.Collections.Hashtable" value of type "System.Collectio ns.Hashtable" to type "Microsoft.Azure.Commands.AnalysisServices.Models.PsAzure AnalysisServicesFirewallRule".
This is untested and therefore theoretical, but this should fix that error if the type can be casted.
$Rules = @() -as [System.Collections.Generic.List[Microsoft.Azure.Commands.AnalysisServices.Models.PsAzureAnalysisServicesFirewallRule]]
$FirewallRules | ForEach-Object {
$ruleNumberVar = "rule" + "$ruleNumberIndex"
if (!($_.FirewallRuleName -match "$ExistingFirewallRuleName")) {
$start = $_.RangeStart
$end = $_.RangeEnd
$tempRule = New-AzAnalysisServicesFirewallRule `
-FirewallRuleName $_.FirewallRuleName `
-RangeStart $start `
-RangeEnd $end
Set-Variable -Name $ruleNumberVar -Value $tempRule
$Rules.Add((Get-Variable $ruleNumberVar -ValueOnly))
$ruleNumberIndex = $ruleNumberIndex + 1
}
}
$conf = New-AzAnalysisServicesFirewallConfig -FirewallRule $Rules
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.