有兩種作法,
1.將檔案名稱、檔案日期、檔案大小丟去資料庫內,再利用Grafana利用SQL語法加總日期,
2.直接加總完,檔案日期、檔案大小丟入資料庫,Grafana直接抓資料呈現
直接使用第二種方式,直接加總資料(圖一)
(圖一)
$file = Get-ChildItem D:\SoftwareTemp\down -Recurse | select name,Length, @{Name="LastWriteTime"; Expression={$_.LastWriteTime.ToString("yyyy-MM-dd")}}
$file | Group-Object -Property 'LastWriteTime' | ForEach{
[pscustomobject]@{
'Name'=$_.name
'Sum'=$_.group|measure Length -sum |select -expand sum
}
} | Sort-Object name
大約說明一下程式碼的意思
Get-ChildItem D:\SoftwareTemp\down –Recurse
用來取得資料夾內的檔案大小,可利用 help Get-Childitem去看詳細資訊
select name,Length, @{Name="LastWriteTime"; Expression={$_.LastWriteTime.ToString("yyyy-MM-dd")}}
格式化 LastWriteTime 變成 yyyy-MM-dd的格式
$file | Group-Object -Property 'LastWriteTime'
將LastWriteTime設成群組
ForEach{
[pscustomobject]@{
'Name'=$_.name
'Sum'=$_.group|measure Length -sum |select -expand sum
}
}
將Length資料相加,並顯示
至於為什麼是把name丟進去Name裡面,可以看(圖二),因為這邊是name
(圖二)
Sort-Object name
就根據日期排列
參考:
如何在PowerShell中對象中的多個項目進行求和
Setup default date format like yyyy-mm-dd in Powershell?
How to sum only 2nd column values using powershell?
Group, get subtotal and output the final result as a table?
Measure-Object
Group-Object
0 意見:
張貼留言