У меня есть сценарий PowerShell, который добавляет IP-адреса в брандмауэр Windows с помощью команды "netsh advfirewall". (Как описано в этом вопросе: Как добавить правила netsh firewall, а не просто заменить).
Проблема заключается в том, что при добавлении большого количества IP-адресов (в настоящее время их более 700) строка IP-адресов кажется «обрезанной» в какой-то момент. Только брандмауэр из общего количества IP-адресов фактически добавляется в брандмауэр, остальные ... нет.
Сценарий очень прост и выглядит примерно так:
$ip = "123.123.123.123,124.124.124.124,125.125.125.125 and so on"
netsh advfirewall firewall set rule name="*" new remoteip="$ip"
Я попытался повторить строку, чтобы увидеть, не обрезана ли она;
echo $ip
Но полная строка правильно отображается.
Есть ли какое-то ограничение длины строки для команды netsh? Или что-то еще, что может быть причиной этой проблемы?
редактировать
Я провел еще несколько исследований, и кажется, что строка не «обрезана». Я переставил строку IP в порядке возрастания, и последний IP-адрес строки был добавлен в брандмауэр. Итак, я полагаю, что могу заключить, что не существует какого-либо ограничения строки.
Однако случайные IP-адреса опускаются. Я написал несколько сценариев «отладки», чтобы выяснить, что происходит, один из этих сценариев генерирует список IP-адресов, которые находятся в строке IP (и, следовательно, должны находиться в брандмауэре), но отсутствуют в брандмауэр. Оказывается, он просто пропускает случайные IP-адреса ... и я понятия не имею, почему ...
Пропускаемые IP-адреса являются идеальными IP-адресами (но не диапазонами или чем-то еще, просто обычными IP-адресами).
Есть идеи?