[英]Run Powershell Cmdlet with various number of parameters
我正在編寫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 ns.Hashtable”的“ System.Collections.Hashtable”值轉換為類型“ Microsoft.Azure.Commands.AnalysisServices.Models.PsAzure AnalysisServicesFirewallRule”。
這是未經測試的,因此是理論上的,但是如果可以轉換類型,則應該可以解決該錯誤。
$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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.