Verzeichnisgröße ermitteln
Dieses Stück Code ist als Template gedacht. Ein zuvor ermitteltest Verzeichnis kann gegenüber dem aktuellem Stand ausgewertet werden. Dazu achtet man auf Zeile 17: $oldresult = $result . Die alten Daten können natürlich auch aus einem XML-Import kommen.
$BaseDirectory = "C:\Users\adrian\Downloads\Windows-classic-samples-master\Windows-classic-samples-master\"
$result=@()
$alleUnterverzeichnisse = ls $BaseDirectory -Recurse -Directory -Force -Depth 1
foreach($unterverzeichnis in $alleUnterverzeichnisse.fullname)
{
Write-Host $unterverzeichnis -ForegroundColor Yellow
ls -Path $unterverzeichnis -Directory -Force | % -Begin{$h =@{} } -Process{ $stat = ls $_.FullName -File -Recurse |`
Measure-Object -Property Length -sum ; $h.Path =$_.FullName ; $h.Files = $stat.Count ; $h.TotalSize =$stat.sum; $result += [PSCustomObject]$h } -End {<#$result#>}
}
# für das erste result wieder einkommentieren um Testdaten zu generieren, später noch einen Import bauen
#$oldresult = $result
function nn($path,$object) ## nn = notNull
{ #wenn der Index von Path im Object.path nicht gefunden werden kann, wird $false zurückgegeben
if($object.path.indexof($path) -ge 0){return $true}else{return $false}
}
$allresults =@($result | Select-Object Path,Files,TotalSize,`
@{Name='oldFiles' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].Files} } },
@{Name='oldTotalSize' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].TotalSize} } },
@{Name='oldPath' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].Path} } },
@{Name='ABSTotalSize' ;Expression={[math]::abs($_.TotalSize - $oldresult[$oldresult.Path.indexof($_.Path)].TotalSize) } },
@{Name='ABSFiles' ;Expression={[math]::abs($_.Files - $oldresult[$oldresult.Path.indexof($_.Path)].Files)}},
@{Name='Deleted' ;Expression={$false}}, # ich bekomme den Pfad leider nicht aus den Eigenschaften raus.
@{Name='IsNew' ;Expression={if(nn $_.Path $oldresult) {return $False} else {return $true} }}
)
$existInOld = Compare-Object $result.path $oldresult.Path | ?{$_.SideIndicator -eq "=>"}
$allresults +=@($existInOld.InputObject |%{
$oldresult[$oldresult.path.indexof($_)] | Select-Object Path,Files,TotalSize,`
@{Name='oldFiles' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].Files} } },
@{Name='oldTotalSize' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].TotalSize} } },
@{Name='oldPath' ;Expression={if(nn $_.Path $oldresult) {$oldresult[$oldresult.Path.indexof($_.Path)].Path} } },
@{Name='ABSTotalSize' ;Expression={[math]::abs($_.TotalSize - $oldresult[$oldresult.Path.indexof($_.Path)].TotalSize) } },
@{Name='ABSFiles' ;Expression={[math]::abs($_.Files - $oldresult[$oldresult.Path.indexof($_.Path)].Files)}},
@{Name='Deleted' ;Expression={$true}},
@{Name='IsNew' ;Expression={if(nn $_.Path $oldresult) {return $False} else {return $false} }}
}
)
$allresults | ogv