Добавив множество IP-адресов, Брандмауэр Windows с помощью командной строки частично не

у меня есть сценарий PowerShell, который добавляет IP-адреса в Брандмауэр Windows с помощью команды "netsh advfirewall". (Как описано в этом вопросе:как добавить правила брандмауэра netsh, а не просто заменить).

проблема в том, что при добавлении большого количества IP-адресов (в настоящее время более 700) строка IP-адресов в какой-то момент кажется "отрезанной".
Только X количество общего количества 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? Или что-нибудь еще, что может быть причиной этой проблемы?


Edit

Я сделал еще несколько исследований, и кажется, что строка не " вырезать выкл. Я переставил IP-строку в порядке возрастания, и последний IP-адрес строки был добавлен в брандмауэр. Поэтому я полагаю, что могу заключить, что нет какого-то ограничения строки.

однако случайные IP-адреса опущены. Я написал несколько сценариев отладки, чтобы выяснить, что происходит, один из этих сценариев генерирует список IP-адресов, которые находятся в IP-строке (и, следовательно, должны быть в брандмауэре), но не присутствуют в брандмауэре.
Оказывается, что это просто опуская случайные IP-адреса... и я понятия не имею, почему...

IP-адресов, которые были опущены прекрасно IP-адресов, хотя (не колеблется ни чего, просто обычный IP-адресов).

какие идеи?

23
задан Community
16.01.2023 8:20 Количество просмотров материала 2556
Распечатать страницу

1 ответ

в качестве альтернативного метода выполнения (так как уже в PowerShell):

это даст вам больше информации на IP: это не тестируется, но должно дать вам лучший вывод / форматирование и в худшем случае хорошую фору и теоретически работать.

$IPs = @("123.123.123.111", "123.123.123.112", "123.123.123.113") |`
   Foreach-object {
   netsh advfirewall firewall set rule name="*" new remoteip="$_"
   write-host "$_ Added $?"
}

если он работает так, как ожидалось, он будет перебирать начальный массив $IPs и пытаться выполнить команду netsh. $? - это состояние последнего выполнения команды, поэтому при успешном выполнении команды netsh она должна PowerShell Windows что-то вроде 123.123.123.111 Added True или 123.123.123.111 Added False.

-1
отвечен Austin T French 2023-01-17 16:08

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх