[英]NSG rule configuration using powershell – having trouble with importing ASGs
我正在處理或編寫PowerShell腳本來配置NSG規則。 大多數規則包含IP地址作為源,但其他一些源由ASG定義。 如果源是IP地址,我的腳本可以正常運行,但如果源是ASG則拋出錯誤。
錯誤消息如下。
Add-AzureRmNetworkSecurityRuleConfig:無法綁定參數'SourceApplicationSecurityGroup'。 無法將“System.String”類型的“xxxx-fw-asg”值轉換為“Microsoft.Azure.Commands.Network.Models.PSApplicationSecurityGroup”類型。
根據錯誤消息,腳本期望ASG處於某種數據類型,而實際上它是一個字符串。 我找不到將此字符串轉換為Powershell期望的類型的方法。 感謝任何轉換數據類型的幫助(或通過任何其他方式解決此問題)。
$nsgCsv = Import-Csv .\NSG-rule-list.csv
foreach ($rule in $nsgCsv) {
if ($rule.SourceAddressPrefix) {
Get-AzureRmNetworkSecurityGroup -Name $rule.NSG -ResourceGroupName $rule.resourceGroup | Add-AzureRmNetworkSecurityRuleConfig `
-Name $rule.ruleName `
-Description $rule.Description `
-Access $rule.Access `
-Protocol $rule.Protocol `
-Direction $rule.Direction `
-priority $rule.Priority `
-SourceAddressPrefix ($rule.SourceAddressPrefix -split ',') `
-SourcePortRange * `
-DestinationAddressPrefix ($rule.DestinationAddressPrefix -split ',') `
-DestinationPortRange ($rule.DestinationPortRange -split ',') `
| Set-AzureRmNetworkSecurityGroup
}
else {
Get-AzureRmNetworkSecurityGroup -Name $rule.NSG -ResourceGroupName $rule.resourceGroup | Add-AzureRmNetworkSecurityRuleConfig `
-Name $rule.ruleName `
-Description $rule.Description `
-Access $rule.Access `
-Protocol $rule.Protocol `
-Direction $rule.Direction `
-priority $rule.Priority `
-SourceApplicationSecurityGroup $rule.sourceASG `
-SourcePortRange * `
-DestinationAddressPrefix ($rule.DestinationAddressPrefix -split ',') `
-DestinationPortRange ($rule.DestinationPortRange -split ',') `
| Set-AzureRmNetworkSecurityGroup
}
}
以下是CSV內容
resourceGroup,NSG,ruleName,Description,Protocol,SourcePortRange,DestinationPortRange,SourceAddressPrefix,sourceASG,DestinationAddressPrefix,DestinationASG,Access,Priority,Direction
poc-network-rg,poc-dmz-nsg,Test7,test rule 7,TCP,*,443,,tes-fw-asg,192.168.0.0/24,NA,Allow,609,inbound
對於-SourceApplicationSecurityGroup,您需要獲取ASG並在此處引用它。
樣品:
$ srcAsg = New-AzureRmApplicationSecurityGroup -ResourceGroupName MyResourceGroup -Name srcAsg -Location“West US”
{
Get-AzureRmNetworkSecurityGroup -Name $ rule.NSG -ResourceGroupName $ rule.resourceGroup | Add-AzureRmNetworkSecurityRuleConfig -Name $rule.ruleName
-Description -Access $rule.Access
-Access $ rule.Access -Direction $rule.Direction
-priority $ rule.Priority -SourceApplicationSecurityGroup $srcAsg
-SourcePortRange * -DestinationAddressPrefix -DestinationAddressPrefix ($rule.DestinationAddressPrefix -split ',')
- DeestinationPortRange($ rule.DestinationPortRange -split',')`| SET-AzureRmNetworkSecurityGroup
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.