使用流水线排列的数组

时间:2018-07-23 20:31:42

标签: powershell powershell-v2.0

我试图制作一个数组数组,其中有一个文件夹名称数组指向文件路径数组:

Folder1: File1, File2, File3
Folder2: File1, File2, File3
etc...

我想出的代码是:

#Paths of the folders being patched
$HF_Folders_To_Patch_LIST = Get-Childitem $HF_Source_Path | Where-Object {$_.PSIsContainer} | Foreach-Object {$_.FullName}
$HF_FILES_LIST = $HF_Folders_To_Patch_LIST | ForEach-Object { ,@(Get-ChildItem -Path $FolderPath | Foreach-Object {$_.FullName}) }

根据我的理解,我应该使用“ @()”或“,@()”,但是我似乎找不到太多的资源来在线创建数组中的数组,我可能会对其进行谷歌搜索。我是按照正确的方式这样做吗,还是有可能这样做呢?我可以进行for循环,并可能得到想要的结果,但是我感觉好像在误解使用管道时数组在Powershell中的工作方式。

2 个答案:

答案 0 :(得分:0)

脚本专家TechNet博客提供了a rather good article关于数组中数组的基础知识以及如何通过数组上的位置访问数据的信息。

您可以使用arraylists轻松地将项目添加到数组,添加到该数组的项目可以是另一个数组。

因此,让我们创建一个数组列表:

$myMainArrayList = New-Object System.Collections.ArrayList

现在,我们创建一个新的数组列表,然后将其添加到主数组列表中。

$mySubArrayList = New-Object System.Collections.ArrayList

您现在可以将项目添加到子列表中:

$stringObject = "This is a string"
$mySubArrayList.add($stringObject)

现在您可以将子数组添加到主数组中

$mySubArrayList.add($mySubArrayList)

您可以根据需要在主数组中添加任意数量的子数组。

答案 1 :(得分:0)

查看下面的答案并意识到我需要一个哈希表之类的东西之后,powershell哈希表函数便是答案,这是为我工作的代码:

$HF_Folders_To_Patch_LIST = Get-Childitem $HF_Source_Path | Where-Object {$_.PSIsContainer} | Foreach-Object {$_.FullName}

$HF_FILES_LIST = @{}
$HF_Folders_To_Patch_LIST | ForEach-Object { $HF_FILES_LIST.Add($_, @(Get-ChildItem -Path $_ | Foreach-Object {$_.FullName})) }