Public/Get-LatestMonthlyRollup.ps1
Function Get-LatestMonthlyRollup { <# .SYNOPSIS Retrieves the latest Windows 8.1 and 7 Monthly Rollup Update. .DESCRIPTION Retrieves the latest Windows 8.1 and 7 Monthly Rollup Update from the Windows 8.1/7 update history feeds. .PARAMETER OperatingSystem Specifies the the Windows operating system version to search for updates. .PARAMETER Previous Specifies that the previous to the latest update should be returned. .EXAMPLE PS C:\> Get-LatestMonthlyRollup This commands reads the the Windows 8.1 update history feed and returns an object that lists the most recent Windows 8.1 Monthly Rollup Update. .EXAMPLE PS C:\> Get-LatestMonthlyRollup -OperatingSystem Windows7 This commands reads the the Windows 7 update history feed and returns an object that lists the most recent Windows 7 Monthly Rollup Update. #> [OutputType([System.Management.Automation.PSObject])] [CmdletBinding(HelpUri = "https://docs.stealthpuppy.com/docs/latestupdate/usage/get-monthly")] Param ( [Parameter(Mandatory = $False, Position = 0, ValueFromPipeline, HelpMessage = "Windows OS name.")] [ValidateNotNullOrEmpty()] [ValidateScript( { $_ -in $script:resourceStrings.ParameterValues.Versions87 })] [Alias('OS')] [System.String] $OperatingSystem = $script:resourceStrings.ParameterValues.Versions87[0], [Parameter(Mandatory = $False)] [System.Management.Automation.SwitchParameter] $Previous ) # If resource strings are returned we can continue If ($Null -ne $script:resourceStrings) { Write-Verbose -Message "$($MyInvocation.MyCommand): get feed for $OperatingSystem." $updateFeed = Get-UpdateFeed -Uri $script:resourceStrings.UpdateFeeds.$OperatingSystem If ($Null -ne $updateFeed) { # Filter the feed for monthly rollup updates and continue if we get updates $gumParams = @{ UpdateFeed = $updateFeed } If ($Previous.IsPresent) { $gumParams.Previous = $True } $updateList = Get-UpdateMonthly @gumParams Write-Verbose -Message "$($MyInvocation.MyCommand): update count is: $($updateList.Count)." If ($Null -ne $updateList) { # Get download info for each update from the catalog $downloadInfoParams = @{ UpdateId = $updateList.ID OperatingSystem = $script:resourceStrings.SearchStrings.$OperatingSystem Architecture = $script:resourceStrings.Architecture.x86x64 } $downloadInfo = Get-UpdateCatalogDownloadInfo @downloadInfoParams # Add the Version and Architecture properties to the list $updateListWithVersionParams = @{ InputObject = $downloadInfo Property = "Note" NewPropertyName = "Version" MatchPattern = $script:resourceStrings.Matches."$($OperatingSystem)Version" } $updateListWithVersion = Add-Property @updateListWithVersionParams $updateListWithArchParams = @{ InputObject = $updateListWithVersion Property = "Note" NewPropertyName = "Architecture" MatchPattern = $script:resourceStrings.Matches.Architecture } $updateListWithArch = Add-Property @updateListWithArchParams # Return object to the pipeline If ($Null -ne $updateListWithArch) { Write-Output -InputObject $updateListWithArch } } } } } |