2017-05-15 3 views
1

Ich versuche den besten Weg zu finden mit PowerShell ein Array aus der Ausgabe einer Variablen zu erstellen.Array aus String oder Variable erstellen

Ich habe den folgenden Code:

$ListNames = & "listNames.cmd" | Out-String 

die mir die folgende Ausgabe gibt:

 
(c) 2016 - 2017 Use of this software is subject to license restrictions 
::Microsoft Windows 7 
::Microsoft Windows 7::name1 
::Microsoft Windows 7::name2 
::Microsoft Windows 7::name3 
::Microsoft Windows 7::name4 
::Microsoft Windows 7::name5 
::Microsoft Windows 7::name6 
::Microsoft Windows 7::name7 

ich Notwendigkeit in einem Array alles von name1 durch name7.

Ich versuchte, ohne Erfolg zu versuchen, es in eine CSV mit Trennzeichen : zu konvertieren, versucht, eine PSObject, und ein paar andere Möglichkeiten, die mir nicht das Ergebnis, das ich suchte, zu schaffen.

Jede Hilfe oder Anleitung würde sehr geschätzt werden!

+1

'$ Listname -split '[\ r \ n] +' | Wobei {$ _ -match '::. +? :: (. +)'} | ForEach {$ Übereinstimmungen [1]} ' – TheMadTechnician

+0

Nice! Perfekt gearbeitet. – Awsmike

+0

Alle regex: '[regex] :: Übereinstimmungen ($ ListNames, '(? M) (? <= ::) ([^:] +) $'). Value' – TessellatingHeckler

Antwort

0

Ich würde wahrscheinlich etwas tun:

  1. die Out-String entfernen. Sie möchten die Ausgabe trotzdem Zeile für Zeile bearbeiten, so dass Sie die Zeilen nur zusammenführen müssen, um sie später erneut zu teilen.
  2. Begrenzen Sie den Ausgang auf relevante Leitungen, indem Sie ihn durch einen Where-Object Filter leiten (find oder findstr würde wahrscheinlich auch funktionieren).
  3. Teilen Sie jede verbleibende Linie bei :: und wählen Sie das letzte Feld von jedem resultierenden Array.
& ".\listNames.cmd" | Where-Object { 
    $_ -like '::*::*' 
} | ForEach-Object { 
    ($_ -split '::')[-1] 
} 

Eine weitere Option ein regulärer Ausdruck Spiel sein würde, wie @TheMadTechnician vorgeschlagen:

& ".\listNames.cmd" | Where-Object { 
    $_ -match '^::.+?::(.+)' 
} | ForEach-Object { 
    $matches[1] 
} 
Verwandte Themen