首页 > 解决方案 > 让 Powershell 将文件的大小报告为 CSV 并继续添加而不是替换数据

问题描述

我正在尝试创建一个 Powershell 脚本,该脚本基本上只是查看服务器上的 Access 数据库文件大小,将文件大小以及确切的日期和时间添加到 CSV,然后保存它。

我只想要一个大小的运行报告,我打算让它每小时运行一次。我不知道如何让它只是添加到 CSV 而不是每次都创建一个新的 CSV。这是我到目前为止所拥有的:

$file = "\\location\file.mdb"
$Header = 'Name','Size','Time'
$Data = Import-Csv "\\location\REPORT.csv" -Delim ',' -Header $Header
$CSV = "\\location\REPORT.csv"
$A = Get-Date -UFormat '%B-%d-%Y %r'
$NewRow = "Name,Size,Time"
$NewRow | Add-Content -Path $CSV
Get-ChildItem -Path $file -Recurse -Force | ForEach {
    [PSCustomObject]@{
        Name = $_.Name
        Size = "$([int]($_.length / 1mb)) MB"
        Time = $A
    }
} | Export-Csv -Path "\\location\REPORT.csv" -Delim ',' -En UTF8 -NoType

它创建 CSV,但它只是用新行覆盖而不是添加新行。

标签: powershellcsv

解决方案


大多数转储到文件的命令都喜欢Export-[Type]Out-File支持该-Append标志:

Export-Csv -Path "\\location\REPORT.csv" -Delim ',' -En UTF8 -NoType -Append

推荐阅读