Script de Azure Powershell para clonar reglas de NSG entre suscripciones en el mismo inquilino

Script de Azure Powershell para clonar reglas de NSG entre suscripciones en el mismo inquilino

Necesito ayuda con un script de PowerShell para clonar reglas de NSG de un NSG en particular en 1 suscripción a un NSG en otra suscripción. Tengo un script que logra esto si ambos NSG están en la misma suscripción, pero no si están en suscripciones diferentes. Esto es lo que tengo. Cualquier ayuda sería 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

Respuesta1

Solo necesita configurar el contexto de suscripción antes y después del nsg de origen como este

Set-AzContext -SubscriptionName 'SUBNOMBRE'

$nsg = Get-AZNetworkSecurityGroup -Name $nsgOrigin -ResourceGroupName $rgName $nsgRules = Get-AZNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg

Set-AzContext -SubscriptionName 'SUBNOMBRE'

información relacionada