Public/Get-OSDUpdate.ps1

<#
.SYNOPSIS
Returns an Array of Microsoft Updates
 
.DESCRIPTION
Returns an Array of Microsoft Updates contained in the local WSUS Catalogs
 
.LINK
https://www.osdeploy.com/osdupdate/functions/get-osdupdate
 
.PARAMETER GridView
Displays the results in GridView with -PassThru
 
.PARAMETER Silent
Hide the Current Update Date information
#>


function Get-OSDUpdate {
    [CmdletBinding()]
    PARAM (
        [switch]$GridView,
        [switch]$Silent
    )
    #===================================================================================================
    # Update Information
    #===================================================================================================
    if (!($Silent.IsPresent)) {Write-Warning "Updates are Current as of June 27, 2019"}
    #===================================================================================================
    # Variables
    #===================================================================================================
    $OSDUpdate = @()
    #===================================================================================================
    # UpdateCatalogs
    #===================================================================================================
    $OSDUpdateCatalogs = Get-ChildItem -Path "$($MyInvocation.MyCommand.Module.ModuleBase)\Catalogs\*" -Include "*.xml"
    #===================================================================================================
    # Import Catalog XML Files
    #===================================================================================================
    foreach ($OSDUpdateCatalog in $OSDUpdateCatalogs) {
        $OSDUpdate += Import-Clixml -Path "$($OSDUpdateCatalog.FullName)"
    }
    #===================================================================================================
    # Standard Filters
    #===================================================================================================
    $OSDUpdate = $OSDUpdate | Where-Object {$_.FileName -notlike "*.exe"}
    $OSDUpdate = $OSDUpdate | Where-Object {$_.FileName -notlike "*.psf"}
    $OSDUpdate = $OSDUpdate | Where-Object {$_.FileName -notlike "*.txt"}
    $OSDUpdate = $OSDUpdate | Where-Object {$_.FileName -notlike "*delta.exe"}
    $OSDUpdate = $OSDUpdate | Where-Object {$_.FileName -notlike "*express.cab"}
    #===================================================================================================
    # Sorting
    #===================================================================================================
    #$OSDUpdate = $OSDUpdate | Sort-Object -Property @{Expression = {$_.CreationDate}; Ascending = $false}, Size -Descending
    $OSDUpdate = $OSDUpdate | Sort-Object -Property CreationDate -Descending
    #===================================================================================================
    # GridView
    #===================================================================================================
    if ($GridView.IsPresent) {
        $OSDUpdate = $OSDUpdate | Out-GridView -PassThru -Title 'Select OSDUpdates to Return'
    }
    #===================================================================================================
    # Return
    #===================================================================================================
    Return $OSDUpdate
}