我试图创建一个PS脚本来查看目录中的所有子文件夹,获取文件夹中最新文件的lastWrite时间,大小和父文件夹名称,并将值转换为人类可读的格式,如CSV,HTML表等。
到目前为止,我能够使用以下脚本收集所需的所有值。我现在需要让它看起来很好并且每天作为报告发送它(我知道邮件功能,所以你可以跳过它)。
$dir = "\\some\directory"
$folders = Get-ChildItem -Path $dir -Directory
Foreach ($i in $folders.fullname)
{
$newestfile = Get-ChildItem -Path $i | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$parentPath = (Split-Path $newestfile.FullName).Trim("\\some\directory")
$size = [math]::truncate($newestfile.length / 1MB)
$parentPath + " " + [string]$size + " MB " + $newestfile.LastWriteTime
}
到目前为止,这可能不是最有效的脚本,但它可以很快地返回我需要的内容,但如果你有一个,我当然可以接受改进。
结果,我得到了一堆这样的结果:
XXXX 846 MB March-04-15 2:35:51 AM
我希望将其转换为易于阅读的格式,按日期排序。
有谁知道如何实现这个目标的功能?
谢谢!
答案 0 :(得分:0)
这绝不是一个完成的产品,而是一个如何创建自定义对象以帮助控制输出的示例。
#$dir = "\\some\directory"
$GetFiles = Get-ChildItem -Path $dir -Recurse
foreach ($a in $GetFiles){
$obj = New-Object -TypeName psobject
Add-Member -InputObject $obj -MemberType NoteProperty -Name FileName -Value $a.Name
Add-Member -InputObject $obj -MemberType NoteProperty -Name LastAccess - Value $a.LastAccessTime
Add-Member -InputObject $obj -MemberType NoteProperty -Name Directory -Value $a.Directory
Add-Member -InputObject $obj -MemberType NoteProperty -Name Size -Value ((Get-Item $a.FullName).Length / 1MB)
$obj | Export-Csv -Path "$env:USERPROFILE\Desktop\output.csv" -Append - NoTypeInformation
}
Import-Csv "$env:USERPROFILE\Desktop\output.csv" | Sort-Object LastAccess - `enter code here`Descending | Out-GridView