#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. Это примерно так же ясно, как грязь. Предоставьте нам некоторые образцы данных и пример результатов, которые, как вы ожидаете, скрипт выдаст вам на основе этих данных.