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
#>