Я работал над небольшим проектом, который должен извлечь некоторую информацию из файлового сервера. Для выполнения этого проекта я создал скрипт, который выводит всю информацию в файл .csv. Проблема в том, что Powershell в процессе потребляет всю оперативную память моего компьютера, потому что для анализа требуется сотни ГБ данных.
Вот мой сценарий.
$folder = Get-ChildItem -Recurse 'Complete_Path' | select FullName, @{Name="Owner";Expression={(Get-Acl $_.FullName).Owner}}, CreationTime, LastWriteTime, LastAccessTime, PSIsContainer | sort FullName
$output = @()
$folder | foreach {
$type =
if ($_.PSIsContainer -eq "True") {
Write-Output "Folder"
}
else {
Write-Output "File"
}
$size =
if ($_.PSIsContainer -eq "True") {
Get-ChildItem -Recurse $_.FullName | measure -Property Length -Sum -ErrorAction SilentlyContinue | select -ExpandProperty Sum
}
else {
Get-Item $_.FullName | measure -Property Length -Sum -ErrorAction SilentlyContinue | select -ExpandProperty Sum
}
$hash = @{
FullName = $_.FullName
Owner = $_.Owner
CreationTime = $_.CreationTime
LastWriteTime = $_.LastWriteTime
LastAccessTime = $_.LastAccessTime
Type = $type
'Size in MB' = [math]::Round($($size/1Mb),2)
}
$output += New-Object PSObject -Property $hash
}
$output | select FullName, Owner, CreationTime, LastWriteTime, LastAccessTime, Type, 'Size in MB' | Export-Csv C:\myDOCS.csv -Delimiter ";" -NoTypeInformation -Encoding UTF8
Ребята, вы понимаете, как я могу выполнить работу быстрее и с меньшими затратами оперативной памяти? На добычу может уйти несколько дней.
Заранее спасибо.