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" :
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 :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
[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.
Partager