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-ID: 293668

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

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

114757
Lösung 114757 20.01.2016, aktualisiert am 26.01.2016 um 07:37:20 Uhr
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