
Preciso de ajuda com um script do PowerShell para clonar regras NSG de um NSG específico em uma assinatura para um NSG em outra assinatura. Eu tenho um script que faz isso se ambos os NSGs estiverem na mesma assinatura, mas não se estiverem em assinaturas diferentes. Aqui está o que eu tenho. Qualquer ajuda seria apreciada.
#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
Responder1
Você só precisa definir o contexto da assinatura antes e depois do nsg de origem assim
Set-AzContext -SubscriptionName 'SUBNOME'
$nsg = Get-AZNetworkSecurityGroup -Name $nsgOrigin -ResourceGroupName $rgName $nsgRules = Get-AZNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg
Set-AzContext -SubscriptionName 'SUBNOME'