Я написал несколько сценариев PowerShell для сбора статистики с Windows-машины. Первый из них касался сбора CPU, использования памяти и т. Д. Через определенные промежутки времени. Что хорошо работает. Я написал еще одно, что в основном проверяет LastAccessTime для файлов и создает CSV, код ниже:Ищете лучший способ писать CSVs
$dest="C:\users\Administrator\Documents\filelist.csv"
[email protected]()
$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
переменная, не влияя на результаты? Надеюсь, это имеет смысл.
'сценарий заканчивается из-за некоторой ошибки или чего-то еще - что именно происходит? Я думал, что PowerShell продолжает сценарий по умолчанию после обнаружения ошибки. – wOxxOm
На самом деле это не ошибка. Я имею в виду, что я сохраняю CSV-файл в цикле каждый раз, так что если программа неожиданно завершается, у меня все еще есть данные в файле csv. Если я экспортирую csv после цикла, тогда, возможно, я потеряю данные в таком поведении. – Junaid