PowerShell文件的年龄,以月为单位

时间:2018-05-30 20:57:55

标签: powershell

我正在尝试获取有关我的驱动器上的文件的信息,就像上次访问它们一样。我可以让它回来。

Get-ChildItem | Group {$_.LastWriteTime.ToString("MM")} | Sort Name | 
    Format-Table Name,Count -auto
Name Count
---- -----
05       2
07       8
10       3
11       2

但我正在寻找:

Age in Months   Storage Space Used (MB)
0                 100 MB
1                 120 MB
2                 50 MB
3                 20 MB
4                 10 MB
5                 5 MB

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

是否要对文件创建时间与现在之间的月数进行分组,而不是创建月份的组?如果是这样,那么使用New-Timespan应该可以做到这一点,如下所示:

ls -File | % {
    New-Object psobject -Property @{
        Age = [int]((New-TimeSpan -Start $_.LastWriteTime).Days / 31)
        Size = ($_.Length) 
    }
} | Group-Object Age | Select @{
    Name = 'Age in Months'
    Expression = {[int]($_.Name)}}, 
    @{Name ='Storage Size Used (MB)'
    Expression = {[int](($_.Group.Size | Measure-Object -Sum).Sum / 1MB)}
} | sort 'Age in Months'

答案 1 :(得分:0)

我认为这可能会实现您的目标。不确定它是否是最干净的方式,但我还在学习自己。

get-childitem | Select-Object Name, @{
    Name = "Age in Months" ;
    e = {[int](((Get-date) - ($_.lastwritetime)).days/30)} 
 } ,

 @{
    Name="Storage Spaced Used (MB)" ;
    e = {[math]::Round($_.Length / 1MB, 2 )}
 } | 



Sort-Object -property "Age in months"

答案 2 :(得分:0)

以下脚本分组由yyyy-MM组成,并使用Function Get-FriendlySize

## https://stackoverflow.com/q/50535131/6811411
function Get-FriendlySize {
    param($Bytes)
    $sizes='Bytes,KB,MB,GB,TB,PB,EB,ZB' -split ','
    for($i=0; ($Bytes -ge 1kb) -and 
        ($i -lt $sizes.Count); $i++) {$Bytes/=1kb}
    $N=2; if($i -eq 0) {$N=0}
    "{0,6:N$($N)} {1}" -f $Bytes, $sizes[$i]
}


Get-ChildItem | Group {$_.LastWriteTime.ToString("yyyy-MM")}| Sort Name -Desc|ForEach {
   [pscustomobject]@{
       'FileAge' = $_.Name
       'Space Used'= (Get-FriendlySize (($_.Group|measure Length -sum).sum) )
    }
 }

示例输出(带逗号的德语区域设置)

FileAge Space Used
------- ----------
2018-05    364 Bytes
2017-08  18,12 KB
2017-07  10,30 KB
2017-06  52,44 KB
2017-05   1,77 KB
2017-04    606 Bytes
2017-03  24,85 KB
2017-02   8,45 KB
2017-01  14,54 KB
2016-12  27,22 KB
2016-11 160,85 KB
2016-10   1,33 MB
2016-09 338,42 KB
2016-08   1,76 MB

答案 3 :(得分:0)

您可以使用PowerShellHumanizer模块。它添加了自定义的FileSystem表格式,因此您将看到:

PS C:\> Get-ChildItem


    Directory: C:\Program Files\7-Zip


Mode     LastWritten         Length Name
----     -----------         ------ ----
da----   9 months ago               Lang
-a----   one year ago         93 KB 7-zip.chm
-a----   one year ago         79 KB 7-zip.dll
-a----   one year ago         49 KB 7-zip32.dll
-a----   one year ago          1 MB 7z.dll
-a----   one year ago        414 KB 7z.exe
-a----   one year ago        178 KB 7z.sfx
-a----   one year ago        163 KB 7zCon.sfx
-a----   one year ago        784 KB 7zFM.exe
-a----   one year ago        533 KB 7zG.exe
-a----   4 years ago          366 B descript.ion
-a----   one year ago         40 KB History.txt
-a----   one year ago          2 KB License.txt
-a----   one year ago          2 KB readme.txt