Ich habe das Problem, wenn ich versuche, ein Array aus einer Powershell-Funktion zurückzugeben.Powershell Funktion Array zurückgeben
Meine Funktion:
function filter-SWCluster {
param($Path, $FolderList)
$OldSWCluster = New-Object System.Collections.ArrayList
ForEach ($y in $FolderList) {
Get-ChildItem -Path $Path -Filter $y* | sort { [version]($_.Name -replace '^.*_(\d+(\.\d+){1,3})$', '$1') } -Descending | Select-Object -skip 3 | ForEach-Object { $OldSWCluster.Add($Path + "\" + $_) }
}
Write-Output $OldSWCluster
}
Der Funktionsaufruf:
$FilerSWCluster = filter-SWCluster $NetworkPath $SWCluster
Die Ausgabe erhalte ich:
0 1 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.2 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.1
Der Ausgang ich will und Notwendigkeit wäre:
\\server.domain\C$\TEMP\Folders\Testcluster_1.0.2 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.1
Ich brauche nur die Wege. Ich weiß, dass es schon einige Lösungen geben wird, aber entschuldigen Sie bitte, dass ich keinen gefunden habe, der für mich arbeitete oder ich zu dumm war, es richtig zu benutzen (könnte sein).
Ich hoffe, dass jemand von Ihnen mir helfen kann.
Dank
ArrayList '' Add' Methode gibt den neuen Index zurück, Sie müssen es z '$ OldSWCluster.Add ($ Pfad +" \ "+ $ _)> $ null' – wOxxOm
Mann du bist großartig, es hat perfekt funktioniert. Habe ich richtig verstanden, fügt die add-Methode nicht nur den Wert hinzu, sondern fügt auch einen Index hinzu. Und wenn ich die Variable zurück gebe, wird der Index auch weitergegeben? – Anetair
1) Es fügt nur den Wert in das Array und 2) gibt den Index in den Standard-Ausgabestrom durch implizite Write-Output, die durch Umleiten auf $ null oder Casting auf [void] unterdrückt werden kann, wie die andere Antwort zeigt. – wOxxOm