
Ich brauche Hilfe mit einem Powershell-Skript, das NSG-Regeln von einer bestimmten NSG in einem Abonnement auf eine NSG in einem anderen Abonnement klont. Ich habe ein Skript, das dies erreicht, wenn sich beide NSGs im selben Abonnement befinden, aber nicht, wenn sie sich in unterschiedlichen Abonnements befinden. Hier ist, was ich habe. Jede Hilfe wäre willkommen.
#name of NSG that you want to copy
$nsgOrigin = ""
#name new NSG
$nsgDestination = ""
#Resource Group Name of source NSG
$rgName = ""
#Resource Group Name when you want the new NSG placed
$rgNameDest = ""
$nsg = Get-AZNetworkSecurityGroup -Name $nsgOrigin -ResourceGroupName $rgName
$nsgRules = Get-AZNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg
$newNsg = Get-AZNetworkSecurityGroup -name $nsgDestination -ResourceGroupName $rgNameDest
foreach ($nsgRule in $nsgRules) {
$acl = @{Name = $nsgRule.Name; Protocol = $nsgRule.Protocol; SourcePortRange= $nsgRule.SourcePortRange; DestinationPortRange = $nsgRule.DestinationPortRange;Priority = $nsgRule.Priority;Direction = $nsgRule.Direction; Access = $nsgRule.Access; SourceApplicationSecurityGroup = $nsgRule.SourceApplicationSecurityGroups }
if ( $nsgRule.DestinationAddressPrefix.count -gt 0 ) {
$acl += @{DestinationAddressPrefix = $nsgRule.DestinationAddressPrefix }
}
if ( $nsgRule.SourceAddressPrefix.count -gt 0 ) {
$acl += @{SourceAddressPrefix = $nsgRule.SourceAddressPrefix }
}
if ( $nsgRule.SourceApplicationSecurityGroups.count -gt 0 ) {
$acl += @{SourceApplicationSecurityGroup = $nsgRule.SourceApplicationSecurityGroups }
}
if ( $nsgRule.DestinationApplicationSecurityGroups.count -gt 0 ) {
$acl += @{DestinationApplicationSecurityGroup = $nsgRule.DestinationApplicationSecurityGroups }
}
Add-AZNetworkSecurityRuleConfig -NetworkSecurityGroup $newNsg @acl
}
Set-AZNetworkSecurityGroup -NetworkSecurityGroup $newNsg
Antwort1
Sie müssen lediglich den Abonnementkontext vor und nach der ursprünglichen NSG wie folgt festlegen
Set-AzContext -SubscriptionName 'SUBNAME'
$nsg = Get-AZNetworkSecurityGroup -Name $nsgOrigin -ResourceGroupName $rgName $nsgRules = Get-AZNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg
Set-AzContext -SubscriptionName 'SUBNAME'