【发布时间】:2016-09-12 00:49:40
【问题描述】:
我编写了几个 PowerShell 脚本来从 Windows 机器上收集一些统计信息。第一个是关于以特定间隔收集 CPU、内存使用情况等。哪个工作正常。我写了另一个基本上检查文件的 lastaccesstime 并创建一个 CSV,代码如下:
$dest="C:\users\Administrator\Documents\filelist.csv"
$csvdata=@()
$source="x:\"
$count=0
Get-ChildItem -Recurse $source | foreach{
$csvdata += New-Object PSObject -Property @{FileName=$_.FullName;DateAccessed=($_.LastAccessTime).ToShortDateString()}
$csvdata|Export-Csv $dest -notype
$count+=1
$count
}
好吧,如果我继续向$csvdata 添加内容并且仅在循环结束时导出文件,那么如果脚本由于某些错误或其他原因而结束,我可能会丢失数据。因此,我将其导出到循环中,如代码所示。但这也意味着$csvdata 的大小将不断增加,这意味着它的内存占用量可能会增长到兆字节甚至更多。
有没有办法将此数据转储到 CSV,清空 $csvdata 变量而不影响结果?希望这是有道理的。
【问题讨论】:
-
script ends due to some error or something- 到底发生了什么?我以为 PowerShell 在遇到错误后默认会继续执行脚本。 -
它实际上并没有以错误结束。我的意思是我每次都将 CSV 文件保存在循环中,这样如果程序意外退出,我仍然在 csv 文件中有数据。如果我在循环后导出 csv,那么我可能会在这种行为中丢失数据。
标签: powershell logic export-to-csv