簡體   English   中英

使用PowerShell進行NSG規則配置 - 導入ASG時遇到問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM