Есть задача - заблокировать .exe полный доступ в сеть с помощью стандартного Windows Firewall.
на Powershell это делается просто:
[void](New-NetFirewallRule -DisplayName "Blocked $exePath" -Direction Inbound -Program $exePath -Action Block -Profile Any)
[void](New-NetFirewallRule -DisplayName "Blocked $exePath" -Direction Outbound -Program $exePath -Action Block -Profile Any)
НО
чтобы не плодить/дублировать правила блокировки - я сначала хочу проверить есть ли для данного $exePath какое-либо правило в Firewall. Если для него нет правил в Firewall то однозначно делаем то, что задумывали - блокируем доступ .exe
Я нашел только 1 способ проверить заблокирован ли для .exe доступ в сеть в Firewall:
Get-NetFirewallRule | Where-Object { $_ } | Get-NetFirewallApplicationFilter | Where-Object { $_.Program -eq "$exePath" }
Проблема в том, что этот поиск (точнее, если я правильно понимаю, перебор всех правил Windows Firewall) выполняется оооооочень долго.
Если необходимо будет проверить несколько .exe на наличие среди правил в Windows Firewall - то это будет катастрофически долго.
Вопросы:
1. Почему эта проверка длится очень долго?
2. Как ускорить эту проверку?