Public/Get-OldFile.ps1
function Get-OldFile { <# .SYNOPSIS Ermittelt alte Dateien. .DESCRIPTION Ermittelt alte Dateien nach Anzahl Tage. .INPUTS .OUTPUTS Liefert ein ein PSObject mit folgenden Eigenschaften..... .EXAMPLE Get-OldFile -Path C:\Windows -OlderThanDays 180 Alle alte Datei aus c:\windows die älter sind als 180 Tage. .EXAMPLE Get-OldFile -Path C:\Windows -OlderThanDays 180 -Recurse Alle alte Datei aus c:\windows und Unterordner die älter sind als 180 Tage. #> param( [Parameter(ParameterSetName = "Days", ValueFromPipeline = $true)] [Parameter(ParameterSetName = "DateTime", ValueFromPipeline = $true)] [ValidateScript({Test-Path $_})] [string] $Path = ".", # Gültige Werte für Tag sind 1 bis 4000 [Parameter(Mandatory = $true, ParameterSetName = "Days")] [ValidateRange(1, 4000)] [UInt32] $OlderThanDays, [Parameter(ParameterSetName = "Days")] [Parameter(ParameterSetName = "DateTime")] [switch] [bool] $Recurse, [Parameter(Mandatory = $true, ParameterSetName = "DateTime")] [ValidateScript({$_ -le (Get-Date)})] [datetime] $OlderThan ) begin { $lastAccessTime = $null switch ($psCmdlet.ParameterSetName) { 'Days' {$lastAccessTime = (Get-Date).AddDays($OlderThanDays * -1)} 'DateTime' {$lastAccessTime = $OlderThan} } } process { Get-ChildItem -Path $Path -Recurse:$Recurse -File -ErrorAction SilentlyContinue | Where-Object -Property LastAccessTime -lt $lastAccessTime | ForEach-Object -Process { $now = Get-Date $owner = $_ | Get-Acl | Select-Object -ExpandProperty Owner $result = [ordered]@{ Name = $_.Name AgeInDays = [Math]::Round(($now - $_.LastAccessTime).TotalDays, 2) Owner = $owner LastAccessTime = $_.LastAccessTime FullName = $_.FullName } New-Object PSObject -Property $result } } } <# KOMPONENTENTEST Get-Help Get-OldFile -ShowWindow Show-Command Get-OldFile Get-OldFile -Path c:\ -Recurse -OlderThanDays 1200 | Out-GridView Get-OldFile -Path c:\ -Recurse -OlderThan "2013-12-31" | Out-GridView Get-OldFiles -Path C:\Windows -OlderThanDays 180 -Recurse Get-OldFiles -Path C:\Windows -OlderThanDays 180 | Out-GridView Get-OldFiles -OlderThanDays 180 -Path C:\Windows -Recurse Get-help Get-OldFiles -ShowWindow Get-OldFiles -Path C:\Windows -OlderThanDays 180 -OlderThan (Get-Date).AddMonths(-50) Get-OldFiles -Path C:\Windows -OlderThanDays 180 Get-OldFiles -Path C:\Windows -OlderThan (Get-Date) Get-Help Where-Object -Online "c:\windows", "C:\windows\System32" | Get-OldFiles -OlderThanDays 180 #> |