Powershell 转换为HTML输出问题

Powershell 转换为HTML输出问题,powershell,Powershell,我使用gci和转换为HTML生成磁盘空间使用情况HTML报告。脚本的一部分为-folder parameter输入的每个指定文件夹生成2个表。在第一个表中,我检索了10个最大的文件夹,在第二个表中,我生成了一个文件龄报告 现在的问题是:当只输入一个目录时,HTML输出就可以了,但是如果我输入两个目录名,我只会得到最后输入的目录名的表 例如: my-function -folder c:\folder1, c:\folder2 将仅为目录c:\folder2创建表 如果我运行此函数而不转换为HT

我使用
gci
转换为HTML
生成磁盘空间使用情况HTML报告。脚本的一部分为
-folder parameter
输入的每个指定文件夹生成2个表。在第一个表中,我检索了10个最大的文件夹,在第二个表中,我生成了一个文件龄报告

现在的问题是:当只输入一个目录时,HTML输出就可以了,但是如果我输入两个目录名,我只会得到最后输入的目录名的表

例如:

my-function -folder c:\folder1, c:\folder2
将仅为目录
c:\folder2
创建表


如果我运行此函数而不转换为HTML,我会在控制台中获取每个目录的所有表,就像我将文件导出为简单的txt一样。

您只会获取列表中最后一个文件夹的表,因为您将表分配给循环中的变量:

$folder | % {
    ...
    $10big = $gdfolders | ... | ConvertTo-Html -Fragment -As Table | Out-String
    $Fileage = $gdage | ... | ConvertTo-Html -Fragment -As Table | Out-String
}

ConvertTo-Html -Body "$10big $FileAge" | Out-File c:\test.html
$10big = @()
$Fileage = @()
$folder | % {
    ...
    $10big += $gdfolders | ... | ConvertTo-Html -Fragment -As Table | Out-String
    $Fileage += $gdage | ... | ConvertTo-Html -Fragment -As Table | Out-String
}

ConvertTo-Html -Body "$10big $FileAge" | Out-File c:\test.html
这将使用当前迭代中的表替换上一次迭代中的表,在循环完成后只剩下上一次迭代中的表

您需要做的是通过将循环中的所有表附加到变量来收集它们(注意循环中的
+=
):

$10big=@()
$Fileage=@()
$folder |%{
...
$10big+=$gdfolders |…|转换为Html-片段-作为表格|输出字符串
$Fileage+=$gdage |……|转换为Html-片段-作为表|输出字符串
}
转换为Html-正文“$10big$FileAge”|输出文件c:\test.Html