我有問題,當我試圖從Powershell函數返回一個數組。Powershell函數返回數組
我的功能:
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
}
函數調用:
$FilerSWCluster = filter-SWCluster $NetworkPath $SWCluster
輸出我得到:
0 1 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.2 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.1
我想和輸出的需求將是:
\\server.domain\C$\TEMP\Folders\Testcluster_1.0.2 \\server.domain\C$\TEMP\Folders\Testcluster_1.0.1
我只需要路徑。我知道已經有了一些解決方案,但是請原諒我,我沒有找到一個爲我工作的人,或者我愚蠢地使用它(可能)。
我希望有人能幫助我。
謝謝
ArrayList的'Add'方法返回新的索引,你需要隱藏它,例如'$ OldSWCluster.Add($ Path +「\」+ $ _)> $ null' – wOxxOm
你是偉大的人,它的工作完美。我的理解是否正確,添加方法不僅僅是增加了值,還增加了一個索引。當我傳回變量時,索引也會傳遞? – Anetair
1)它只是將值添加到數組中,2)通過使用隱式寫入輸出將該索引發送到默認輸出流中,可以通過重定向到$ null或將其轉換爲[void]來抑制其他答案。 – wOxxOm