如何将变量/值转换为PowerShell上的电子表格/表格

时间:2015-03-10 14:04:43

标签: powershell

我试图创建一个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

我希望将其转换为易于阅读的格式,按日期排序。

有谁知道如何实现这个目标的功能?

谢谢!

1 个答案:

答案 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