Public/Export-ADOldUsers.ps1

function Export-ADOldUsers {
    [CmdletBinding(SupportsShouldProcess,DefaultParameterSetName='years')]
    Param (
    [Parameter(Mandatory)]
    [System.IO.FileInfo]$Path,
    [string]$Name="ADUsersOlderThan",
    [Parameter(ParameterSetName='years')]
    [int]$Years,
    [Parameter(ParameterSetName='months')]
    [int]$Months,
    [Parameter(ParameterSetName='days')]
    [int]$Days
    )

    $Date = Get-Date -UFormat '%Y-%m-%d'
    New-Path $Path -Type Directory
    Write-Host @Cyan (
    "Creating Old AD users report at $Path..."
    )

    $Selection = @(
    @{
        Name = 'AD Enabled'
        Expression = {$_.Enabled}
    }
    @{
        Name = 'AD Sam Account Name'
        Expression = {$_.SamAccountName}
    }
    @{
        Name = 'AD Last Logon Date'
        # Piping date object to get-date is more efficient than type conversion.
        # Expression = {$_(.LastLogonDate).ToString().SubString(0,10)}
        Expression = {$_.LastLogonDate | Get-Date -UFormat '%Y-%m-%d'}
    }
    )

    if ($Years) {
    $CsvPath = "$Path\$Name-$($Years)Years-$Date.csv"
    Get-ADOldUsers -Years $Years |
      Select-Object $Selection |
      Export-Csv -NoTypeInformation $CsvPath
    } elseif ($Months) {
    $CsvPath = "$Path\$Name-$($Months)Months-$Date.csv"
    Get-ADOldUsers -Months $Months |
      Select-Object $Selection |
      Export-Csv -NoTypeInformation $CsvPath
    } else {
    $CsvPath = "$Path\$Name-$($Days)Days-$Date.csv"
    Get-ADOldUsers -Days $Days |
      Select-Object $Selection |
      Export-Csv -NoTypeInformation $CsvPath
    }

    $XlsPath = $CsvPath -Replace ".csv",""
    Convert-CsvToXls -Csv $CsvPath -Xlsx $XlsPath
}