Я не думаю, что вам нужно повторять все эти данные. Все эти вложенные циклы + сортировка - вот что вызывает замедление.
Мне кажется, что вы просто хотите вывести все ваши NSG с направлением Inbound
, и доступ равен Allow
, а префикс адреса источника - *
. Если это так, вы можете сделать это:
$nsgs = Get-AzureRmNetworkSecurityGroup
foreach ($nsg in $nsgs.SecurityRules)
{
if ($nsg.Direction -eq "Inbound" -and $nsg.Access -eq "Allow" -and $nsg.SourceAddressPrefix -eq "*")
{
$nsg
}
}
Здесь мы просто повторяем правила безопасности, которые вы сделали из $nsgs.SecurityRules
. Значения по умолчанию $nsgs.DefaultSecurityRules
. Вы можете направить трубку к Get-Member
, чтобы найти эти свойства.