我正在构建一个数组如下
$filelist2 = @()
$e = $null
foreach ($e in $extBkupArr) {
$filelist2 += ,(($e[1]),(Get-ChildItem $ToBeZipped"\*" -Recurse -Include $e[2] | Select-Object fullname ))
}
Array $ filelist2中有4项AA,AA,BB,BB。每个项目(除了一个)都有一个在上面的代码中收集的文件名数组。其中一个(第一个BB)是一个空数组。
数组数据如下所示:
{
{AA,
{@{FullName=C:\Books1\work\src\book1.def},
@{FullName=C:\Books1\work\src\book2.def},
@{FullName=C:\Books1\work\src\book3.def},
@{FullName=C:\Books1\work\src\man1.def},
@{FullName=C:\Books1\work\src\book4.def},
@{FullName=C:\Books1\work\src\man2.def}}},
{AA,
{@{FullName=C:\Books1\work\src\book5.lst},
@{FullName=C:\Books1\work\src\book6.lst}}},
{BB, $null},
{BB,
{@{FullName=C:\Books1\work\src\EmptyFolders.txt},
@{FullName=C:\Books1\work\src\ExcelWorkbooks.txt},
@{FullName=C:\Books1\work\src\table_of_contents.txt},
@{FullName=C:\Books1\work\src\WordDocuments.txt},
@{FullName=C:\Books1\work\src\ShortcutList.txt}
}}}
对于阵列中的4个项目(AA,AA,BB,BB)中的每一个,我想(1)确保它的文件名的数组值不为空,以及(2)如果它们不为null,则通过该辅助数组解析以提取Fullname字段。
该数据被传递给调用7zip的函数,该函数获取AA.FullName&中的值。将该文件压缩为与行上的值(AA,BB等)相关联的zip文件。该函数调用如下:
create-7zip "c:\temp\myFolder" "c:\temp\myFolder.zip"
从上面输入" c:\ temp \ myFolder"将是数组中的fullname字段," c:\ temp \"将是一个静态变量($ zipFldr),以及" myFolder.zip" filename将来自与该类型(AA,BB等)相关联的另一个文件名数组。
那么 - 函数将被调用:
create-7zip ($filelist2.Row(AA,AA,BB,BB).fullname(1 to n)) $zipFldr\$fArray($filelist2.Row)
我可以使用foreach解析$ filelist2数组。
foreach ($f in $filelist2) {
if ($fArray.Containskey($f[0])) {
if ($f(1)) { #null check
$fArray[$f[0]] <----- returns the appropriate zip file name
$zipFldr <----- returns the correct folder name
$f[1] <----- returns the list of fullnames within the array
}
else { write-host "Null Encountered for " $fArray[$f[0]] }
}
但是,我无法将此信息成功传递到该功能中。 $ f [1]传递给函数时为null,$ fArray [$ f [0]]值是空值或system.collections.hashtable名称(而不是我想要的名称)。
在引用这些数组项时我做错了什么?