Я нахожусь в процессе или пишу сценарий powershell для настройки правил NSG. Большинство правил содержат IP-адреса в качестве источника, но некоторые другие источники определяются ASG. Мой сценарий работает нормально, если источником является IP-адрес, но выдает ошибку, если источником является ASG.
Сообщение об ошибке выглядит следующим образом.
Add-AzureRmNetworkSecurityRuleConfig: невозможно связать параметр
'SourceApplicationSecurityGroup. Невозможно преобразовать "xxxx-fw-asg"
значение типа "System.String" для ввода
"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