Я хочу проанализировать текстовый файл конфигурации устройства и выбрать 10 строк после сопоставления строки. Файл конфигурации имеет один и тот же интерфейс, настроенный в разных местах конфигурации, поэтому, когда я запустил свой сценарий PowerShell, он обнаружил два найденных двух дублирующих интерфейса, которые мне не нужны. Я только хочу, чтобы скрипт возвращал вывод только уникального интерфейса.
$OSPF_Interfaces = Select-String -Path $File -Pattern "no\spassive-interface\s(Port-channel|TenGigabitEthernet|GigabitEthernet)" |
select -ExpandProperty line |
Select-Object -Unique
$Active_Interface = $OSPF_Interfaces -replace " no passive-interface ", "interface " |
Select-Object -Unique
Вывод $Active_Interface
правильный
interface GigabitEthernet1/1
interface GigabitEthernet1/2
interface GigabitEthernet1/3
так что теперь я хочу проанализировать файл конфигурации, чтобы найти совпадение для каждого интерфейса в $Active_interface
и выбрать 2 строки для каждого совпадения интерфейса:
foreach ($item in $Active_Interface) {
$Authenticated_Interface = Select-String -Path $File -Pattern "^$item" -Context 0,2 |
Select -Unique
$Authenticated_Interface
}
Приведенный выше код работал, но он вернул повторяющееся совпадение, как показано ниже:
interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/3
description link to building 3
Gate
interface GigabitEthernet1/3
description link to building 3
Gate
Мне не нужен дубликат, но я не знаю, как заставить его возвращать только одну уникальную запись для каждой, как показано ниже:
interface GigabitEthernet1/1
description link to building 1
Medical
interface GigabitEthernet1/2
description link to building 2
Garage
interface GigabitEthernet1/3
description link to building 3
Gate