powershell cisco access-обработка текста списка доступа

#powershell

#powershell

Вопрос:

У меня возникли проблемы со следующим сценарием powershell

У меня есть текстовая конфигурация брандмауэра, я хочу найти первую группу объектов в файле и посмотреть, существует ли она в каких-либо списках доступа в том же текстовом файле, если она найдет следующую группу объектов и продолжит цикл, пока не выведет все группы объектов, которых нет ни в каких списках доступа.

доступ-список данных в массиве $ acl из текстового файла

доступ-список вне объекта расширенного разрешения-объект группы tcp_udp-объект группы domain_controllers -объект группы domain_controllers eq домен
доступ-список вне объекта расширенного разрешения-объект группы tcp_udp-объект группы domain_controllers_trusts-объект группы domain_controllers_trusts-объект группы active_directory
доступ-список вне объекта расширенного разрешения-объект группы tcp_udp-объект группы sccm_server-объект группы my_nets-объект группы smb
доступ-список вне объекта с расширенным разрешением -группа tcp_udp объект-группа sccm_server объект-группа public_nets объект-группа rpc_endpoint
доступ-список вне объекта с расширенным разрешением-группа tcp_udp объект-группа dmz_nets объект-группа domain_controllers объект-группа active_directory

объект-групповые данные в массиве $obg из текстового файла

идентификатор службы объектной группы tcp
порт-диапазон объектов 5900 5901
порт-диапазон объектов 3668 3771
порт-диапазон объектов 5120 5123
порт-объектный эквалайзер 7578
порт-объектный эквалайзер https
порт-объектный эквалайзер www
объект-групповая служба admin_tcp tcp
порт-объектный эквалайзер ssh
порт-объектный эквалайзер https
порт-объектный эквалайзер www
порт-объектный эквалайзер 3389
порт-объектный эквалайзер 445
сетевой активныйдиректория

 $firewall = "fw1-live"

$fw = Get-Content C:Softwarenetconfig$firewall | Where-Object {$_ -notmatch 'remark'} | Set-Content "C:Softwarenetconfigoutputs$firewall"


$fw1 = Get-Content "C:Softwarenetconfigoutputs$firewall"
$fw1.GetType()
Foreach ($acl in $fw1)
        {
        If ($acl.StartsWith("access-list"))
            {
            $acl
            }
         }


Foreach ($obg in $fw1)
        {
        If ($obg.startswith("object-group")) 
            {
            $obg | Get-Unique } }

Get-Content $acl | where { $obg -notcontains $_}
  

вот где я застрял, пожалуйста, помогите

я надеюсь, что это понятнее, пожалуйста, скажите, если нет?

Комментарии:

1. Вместо запутанных объяснений просто добавьте ожидаемый результат (т. Е. То, что должен выводить скрипт, если вы передаете ему образец ввода из вопроса).

Ответ №1:

Работает ли это для ваших данных?

 $text -like 'object-group *' -replace 'object-group ' 
  

-Like отфильтрует его только до строк ‘object-group’, а затем -replace удалит ‘object-group’ из строки, оставив только имена групп объектов.

Операторы -like и -replace работают как операторы массива, поэтому нет необходимости выполнять foreach. Они будут обрабатывать весь массив сразу.

Комментарии:

1. это то, что мне нужно: <br/>

2. Это примерно так же ясно, как грязь. Предоставьте нам некоторые образцы данных и пример результатов, которые, как вы ожидаете, скрипт выдаст вам на основе этих данных.