Bonjour,

Je suis sur un script qui me permet de récupérer des informations sur des switchs Cisco depuis PowerShell.

Via un module Posh-SSH, j’exécute cette commande "show vlan brief" :

2960#show vlan brief

VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
7 default active Gi1/0/41, Gi2/0/15, Gi2/0/17
Gi4/0/13, Gi4/0/25, Gi4/0/28
Gi4/0/29, Gi4/0/30, Gi4/0/31
Gi4/0/32, Gi4/0/33, Gi4/0/34
Gi4/0/35, Gi4/0/36, Gi4/0/37
6 ADMIN-SWITCH active
3 IntercoAruba active
15 WIFIDEH active
56 WIFIPEC active
99 CLIENT-ADM-LAN active Gi1/0/3, Gi1/0/6, Gi1/0/8
Gi1/0/9, Gi1/0/10, Gi1/0/11
Gi1/0/12, Gi1/0/13, Gi1/0/14
Le résultat est placé dans une variable. Je récupère chaque ligne dans un tableau via un -split "`n". Je supprime les chaines qui ne m’intéresse pas et j'obtiens ceci :

[1] 7 default active Gi1/0/41, Gi2/0/15, Gi2/0/17
[2] Gi4/0/13, Gi4/0/25, Gi4/0/28
[3] Gi4/0/29, Gi4/0/30, Gi4/0/31
[4] Gi4/0/32, Gi4/0/33, Gi4/0/34
[5] Gi4/0/35, Gi4/0/36, Gi4/0/37
[11] 6 ADMIN-SWITCH active
[12] 3 IntercoAruba active
[13] 15 WIFIDEH active
[14] 56 WIFIPEC active
[15] 99 CLIENT-ADM-LAN active Gi1/0/3, Gi1/0/6, Gi1/0/8
[16] Gi1/0/9, Gi1/0/10, Gi1/0/11
[17] Gi1/0/12, Gi1/0/13, Gi1/0/14

L'idée est de placer tout cela dans un objet afin d'avoir ceci :

(exemple)

Vlan Description Status Interface
--- --- --- ---
7 default active Gi1/0/41, Gi2/0/15, Gi2/0/17,Gi4/0/13, Gi4/0/25, Gi4/0/28, Gi4/0/29, Gi4/0/30, Gi4/0/31,Gi4/0/32, Gi4/0/33, ...
6 ADMIN-SWITCH active
3 IntercoAruba active
15 WIFIDEH active
56 WIFIPEC active
99 CLIENT-ADM-LAN active Gi1/0/3, Gi1/0/6, Gi1/0/8, Gi1/0/9, Gi1/0/10, Gi1/0/11, Gi1/0/12, Gi1/0/13, Gi1/0/14

Mais la je sèche côté algo.

voici ce que j'ai fais pour le moment :

Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Traitement des informations
# $SSHCommandsVlanBrief  est alimenté via POST-SSH
$i = 0
$y = 0
ForEach($Section in ($SSHCommandsVlanBrief -split "`n")) { 
   If (!($Section -like "`r") -AND !($Section -like "*#*") -AND !($Section -like "*show interfaces status*") -AND !($Section -like "*---*") -AND !($Section -like "*VLAN Name                             Status    Ports*")){       
 
        $i = $i+1
 
        $Vlan = $Section.Substring(0,5).trim()
        $VlanDescription = $Section.Substring(5,33).trim()
        $VlanStatus = $Section.Substring(38,10).trim()
 
 
        If(!([string]::IsNullOrEmpty($Vlan))){
            $ValVlan = $Section.Substring(0,5).trim()
        }
 
        If(!([string]::IsNullOrEmpty($VlanDescription))){
            $ValVlanDescription = $Section.Substring(5,33).trim()
        }
 
        If(!([string]::IsNullOrEmpty($VlanStatus))){
            $ValVlanStatus = $Section.Substring(38,10).trim()
        }
 
        If(!([string]::IsNullOrEmpty($Vlan))){
            $y = $y+1
            $ValInterface = $Section.Substring(48,($Section.Length-48)).trim() + ", "
        }else{
            $ValInterface += $Section.Substring(48,($Section.Length-48)).trim() + ", "
        }
 
        write-host "[$i][$y] $ValVlan $ValVlanDescription $ValVlanStatus $ValInterface"
 
   } 
}

La variable $i me permet de voir mes lignes dans mon tableau.
La variable $y me permet de savoir quand je saute de "Vlan".

Auriez vous une idée ?

Encore merci et bonne journée.