Get-ChildItem数组无法按预期工作

时间:2014-04-22 22:47:54

标签: arrays powershell

我找到了一个脚本,我想用它来查找文件夹中的所有子文件夹,并报告它们上次访问的时间以及它们的大小。我希望以前没有问过这个问题!我在Win 7机器上使用Powershell v3。 这是代码:

$results=@()
$folders = Get-ChildItem | where {$_.psiscontainer}
foreach ($folder in $folders) 
{
    $Size = (Get-ChildItem $folder -Recurse | Measure-Object -property Length -Sum).sum / 1KB 
    $results += Get-ChildItem | Select-Object Name, LastAccessTime, @{Name="Day's Since Access";Expression={(((Get-Date) - $_.LastAccessTime).Days)}}, @{Name="Size in MB";Expression={$Size}}    
}
$results | sort LastAccessTime | ft -AutoSize

我输出的输出列出了文件夹中的所有文件,同时反复显示子文件夹的大小。我得到的输出看起来像这样:

  

名称LastAccessTime日自访问大小以MB为单位   ---- -------------- ------------------ ----------
  Get-ServicePacks.txt 4/17/2014 5:16:13 PM 4 290.09375
  Get-ServicePacks.txt 4/17/2014 5:16:13 PM 4 121.46875
  Get-ServicePacks.txt 4/17/2014 5:16:13 PM 4 196.87890625
  Get-LatestFile.txt 4/21/2014 12:26:45 PM 1 121.46875
  Get-LatestFile.txt 4/21/2014 12:26:45 PM 1 290.09375
  Get-LatestFile.txt 4/21/2014 12:26:45 PM 1 196.87890625
  Get-LatestFile.ps1 4/21/2014 12:27:53 PM 1 290.09375
  Get-LatestFile.ps1 4/21/2014 12:27:53 PM 1 196.87890625
  Get-LatestFile.ps1 4/21/2014 12:27:53 PM 1 121.46875

我期待的是:

  

名称LastAccessTime日自访问大小以MB为单位   ---- -------------- ------------------ ----------
  Display-Computers-Status-and-info-with-Gui 4/17/2014 5:16:13 PM 4 290.09375
  GetSpecifiedFileExtension 4/21/2014 12:26:45 PM 1 196.87890625
  HOTFIXES4 / 21/2014 12:27:53 PM 1 121.46875

我想格式化输出,以便获取文件夹的大小以及名称和上次访问日期。如果有人能解释为什么我的编码尝试失败,我将非常感激。

1 个答案:

答案 0 :(得分:0)

问题是您需要引用$Folder而不是获取$results =+行的文件夹内容。尝试将其更改为:

$results += $folder | Select-Object Name, LastAccessTime, @{Name="Day's Since Access";Expression={(((Get-Date) - $_.LastAccessTime).Days)}}, @{Name="Size in MB";Expression={$Size}}