Короче говоря, мне нужно найти определенную строку в длинном файле, который начинается с «set ip» и продолжается каким-то параметром, который мне нужно заменить.эта строка появляется в файле несколько раз, поэтому мне нужно найти ее между двумя конкретными строками.
Более длинная история: мы скоро получим возможность настроить множество межсетевых экранов FortiGate для наших офисов, большинство настроек, политики и т. д.будет то же самое, но меняются внешние IP-адреса, меняются некоторые другие адреса и т. д. Поэтому я пытаюсь создать скрипт powershell, который примет существующую конфигурацию (которая может измениться), найдет нужные мне строки и заменит их.Я пытался с регулярным выражением, но не мог заставить его работать для меня на нескольких строках.в основном для справки мне нужно найти «set ip» в следующей части:
config system interface
edit "wan1"
set vdom "root"
set ip 7.7.7.7 255.255.255.252
set allowaccess ping https ssh
set ident-accept enable
set type physical
set scan-botnet-connections block
set alias "WAN1"
set role wan
set snmp-index 1
next
(IP был изменен в целях безопасности) и так далее.то, что я получил до сих пор:
get-content .\Fortigate.conf | select-string -pattern "^#","set uuid " -notmatch
к сожалению, ничего, что я пытался вырезать эту часть текста, чтобы поиск только там работал.например с регулярным выражением я попытался:
get-content .\Fortigate.conf | select-string -pattern "^#","set uuid " -notmatch | select-string -Pattern '(?m)edit "wan1".*?end'