derhoeppi
Goto Top

Powershell String formatieren

Hallo,

ich habe ein Skript das einen Netzwerkswitch ausliest. Das hat bis dato auch funktioniert, aber mit einem Firmwareupdate hat sich der Output verändert. Bisher wurde die VLAN Konfiguration in einer Zeile geschrieben. Nun sind es je nach Portkonfiguration 2 oder mehr Zeilen. Wie kann ich jedoch die Zeilen zusammenführen und wie kann ich es dynamisch halten, so dass es mal nur eine, mal zwei oder eben auch drei oder vier Zeilen sind?


Der Putty Output sieht derzeit so aus
    Openflow: disabled
    VLANs: 50,101-102
           105-106,115-121
          123-132,134,136-139
    Private-VLAN: disabled

Als der Output für die VLANs bis dato einzeilig war, war die Weiterverarbeitung einfach. Nur jetzt könnte ich vermutlich die ganze Sache starr machen, aber wie kann ich es dynamisch halten, so dass er die VLANs ab VLANs: bis Private-VLAN in ein Array schreibt.

Gruß
derhoeppi

Content-Key: 293668

Url: https://administrator.de/contentid/293668

Printed on: April 23, 2024 at 12:04 o'clock

Mitglied: 114757
Solution 114757 Jan 20, 2016, updated at Jan 26, 2016 at 06:37:20 (UTC)
Goto Top
$output = @"  
    Openflow: disabled
    VLANs: 50,101-102
           105-106,115-121
          123-132,134,136-139
    Private-VLAN: disabled
"@  

$arr = [regex]::Matches(($output|out-string)'(?is)(\d+-\d+|\d+)').Captures | %{$_.Groups[1].Value}  
$arr
oder wenn das nicht der komplette Output war den du gespostet hast dann so, mit zusätzlich explizitem extrahieren zwischen den zwei VLAN-Stichworten:
$output = @"  
    Openflow: disabled
    VLANs: 50,101-102
           105-106,115-121
          123-132,134,136-139
    Private-VLAN: disabled
"@  
$raw = [regex]::Match(($output|out-string),'(?is)VLANs:(.*)Private-VLAN').Groups[1].Value  
$arr = [regex]::Matches($raw,'(?is)(\d+-\d+|\d+)').Captures | %{$_.Groups[1].Value}  
$arr

Gruß jodel32