我正在参加适合初学者的PowerShell课程,并且在请求帮助时,讲师完全没用。我正在尝试执行的任务是:在计算机中搜索以.doc,.docx,.xls或.xlsx文件扩展名结尾的文件。 将文件名和大小(按文件扩展名分组)输出到名为“File_Summary.txt”的文本文件。输出结果还应包含每个文件扩展名的文件总数和文件总大小。我迄今为止创建的代码是:每个分机的Powershell计数文件扩展名和总文件大小
$path = ".\"
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt"
$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length/1Kb) }}
$results | Sort-Object -Property extension | Out-File $destination
$countFiles = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"}
$countFiles | Group-Object -Property extension | Out-File $destination -Append
该代码运行(尽管我确定它是可怕的编码);但是,我无法弄清楚如何将每个扩展的总文件大小加在一起。我有每个扩展的文件总数,但不是总大小。感谢任何人都可以给我的帮助!
我不认为你有一个没有循环的整洁选项;我能想到的最干净的就是使用'Group-Object -Property Extension'并将其存储在一个变量中,然后使用'$ store | ForEach {$ _。Name; $ _。Group |测量对象-Sum-属性长度|选择-ExpandProperty Sum}'并查看它的作用,并将其附加到文件中。 (我也建议你在做任何事情之前先存储基本Get-ChildItem调用的结果,然后你可以重新使用结果,而不必等待它再次搜索文件数)。 – TessellatingHeckler