Konvertieren Arraylist zu string in powershell
Ich versuche grep einige Daten aus einer variable:
Select-String -inputObject $patternstring -Pattern $regex -AllMatches
| % { $_.Matches } | % { $_.Value } -OutVariable outputValue
Write-Host $outputValue
Den gleichen outvariable ich versuche zu tun, string-manipulation
$outputValue.Substring(1,$outputValue.Length-2);
dies fehlschlägt, die besagt, dass outputValue ist ein ArrayList
.
Wie kann ich umwandeln Arraylist
zu String
?
- Haben Sie versucht, die Durchführung eine Verknüpfung auf $outputValue ersten? Ala $($outputValue -join "`t") Dadurch erhalten Sie die arraylist-Werte serialisiert als eine tab-getrennte Zeichenkette.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits in sean_m Kommentar, die einfachste Sache zu tun ist, einfach konvertieren Sie zuerst das System.Sammlungen.ArrayList von strings zu einem einzigen string mit den join-operator:
Sobald Sie dies getan haben können Sie führen regelmäßige string-Operationen auf $outputValue, wie die Methode Substring ().
Ich oben trennen Sie die einzelnen string in der ArrayList mit einer neuen Zeile, so dass in der Regel die Zeichenfolge ein, die -OutVariable teilt die Zeichenfolge bei der Konvertierung in eine ArrayList, aber Sie können ein anderes Trennzeichen/string, wenn Sie wollen.
Versuchen wie diesem:
Den parameter
-outvariable
imForEach-Object
scheint nicht zu erfassen, die Ausgabe der sciptblock Verarbeitung ( in der Powershell V2; danke an @ShayLevi zum testen, es funktioniert in der V3).Wenn die Ausgabe eine Sammlung von Werten ist dann egal, welchen Typ das Ergebnis ist , substring ausfallen sollte. Versuchen Sie, um die Pfeife zu
Foreach-Object
und verwenden Sie dann den Teilstring.UPDATE:
Die OutputVariable funktioniert nur in v3, siehe @Christian-Lösung für v2.
-outvariable
nicht Auffüllen. Können Sie bestätigen, dieses Problem? DankForeach-Object { $_.Substring(1,$_.Length-2) }
?