【发布时间】:2019-07-12 23:57:58
【问题描述】:
我正在编写一些 Azure 分析服务配置的脚本,更具体地说是防火墙。 cmdlet
New-AzAnalysisServicesFirewallConfig -FirewallRule
接受创建的规则作为参数;以$rule1 为例。
我希望脚本能够为该命令采用不同数量的参数。而不必像示例中的 6 条规则那样将其硬编码为 X 条规则。
我尝试创建一个包含 X 个参数的 Array 和一个 Hashtable,但无法转换它们。
$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
收到此错误:
New-AzAnalysisServicesFirewallConfig:无法绑定参数“FirewallRule”。无法转换“System.Collectio”类型的“System.Collections.Hashtable”值 ns.Hashtable”以键入“Microsoft.Azure.Commands.AnalysisServices.Models.PsAzure AnalysisServicesFirewallRule”。
【问题讨论】:
-
您似乎需要创建这些规则类型的列表。该代码类似于
$Rules = @() -as [System.Collections.Generic.List[Microsoft.Azure.Commands.AnalysisServices.Models.PsAzureAnalysisServicesFirewallRule]。然后使用$Rules.Add($rule1)将$rule1 添加到列表中。
标签: azure powershell