我使用gci
和convertto-html
生成磁盘空间使用情况HTML报告。我的脚本的一部分为-folder parameter
输入的每个指定文件夹生成2个表。在第一个表中,我检索了10个最大的文件夹,在第二个表中,我生成了一个文件年龄报告。
现在的问题是:当只输入一个目录时,HTML输出就可以了,但如果输入2个目录名,我只得到最后输入目录名的表。
例如:
my-function -folder c:\folder1, c:\folder2
将只为目录c:\folder2
创建表。
如果我在不转换为HTML的情况下运行此函数,我会在控制台中获取每个目录的所有表,与我out-file
相同,只需一个简单的txt。
答案 0 :(得分:2)
您只获得列表中最后一个文件夹的表,因为您将表分配给里面的变量循环:
$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