### Install MSCatalogLTS Module Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Installs the MSCatalogLTS module from the PowerShell Gallery. Use this command to get started with the module. ```powershell Install-Module -Name MSCatalogLTS ``` -------------------------------- ### Install MSCatalogLTS Module Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Installs the MSCatalogLTS module for the current user. Ensure you have an active internet connection. ```powershell Install-Module -Name MSCatalogLTS -Scope CurrentUser ``` -------------------------------- ### Install ImportExcel Module Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Command to install the ImportExcel module, which is required for Save-MSCatalogOutput. ```powershell Install-Module -Name ImportExcel ``` -------------------------------- ### Pipeline Operations: Get Latest Update and Download Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Illustrates a pipeline operation to get the latest update and then download it. ```powershell # Get latest update and download Get-MSCatalogUpdate -Search "Windows 11 24H2" | Select-Object -First 1 | Save-MSCatalogUpdate -DownloadAll ``` -------------------------------- ### Automatic Strict Search Examples Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Demonstrates how searches containing 'Windows' automatically use strict (exact phrase) matching. ```powershell # These automatically use strict search: Get-MSCatalogUpdate -Search "Windows 11 24H2" Get-MSCatalogUpdate -Search "Windows Server 2022" Get-MSCatalogUpdate -Search ".NET Framework Windows 11 24h2" ``` ```powershell # These don't (unless -Strict is specified): Get-MSCatalogUpdate -Search "Edge x64" Get-MSCatalogUpdate -Search ".NET 8.0" ``` -------------------------------- ### Verify MSCatalogLTS Installation Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Checks if the MSCatalogLTS module is installed and available in the system's module path. This is useful for confirming a successful installation. ```powershell Get-Module -ListAvailable MSCatalogLTS ``` -------------------------------- ### Update Type Prefix Detection Examples Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Shows how the tool automatically detects and filters by update type based on prefixes in the search query. ```powershell # Automatically filters for Servicing Stack updates only Get-MSCatalogUpdate -Search "Servicing Stack Windows Server 2016 x64" ``` ```powershell # Automatically filters for Dynamic updates only Get-MSCatalogUpdate -Search "Dynamic Update Windows 10 21H2" ``` -------------------------------- ### Get .NET Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Retrieve .NET and .NET Framework updates by searching for specific versions. Useful for managing .NET installations. ```powershell Get-MSCatalogUpdate -Search ".NET 8.0" ``` ```powershell Get-MSCatalogUpdate -Search ".NET Framework windows 11 24h2" ``` -------------------------------- ### Combining Filters for Complex Queries Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Provides an example of using multiple filters simultaneously to refine search results. ```powershell # Complex filtering Get-MSCatalogUpdate -Search "Windows 11 24H2" ` -LastDays 60 ` -Architecture x64 ` -UpdateType "Security Updates" ` -MinSize 100 ` -ExcludeFramework ` -SortBy Date ` -Descending ``` -------------------------------- ### Save-MSCatalogOutput Usage Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Example of exporting update data to an Excel file using Save-MSCatalogOutput. ```powershell $updates = Get-MSCatalogUpdate -Search "Windows 11 24H2" -LastDays 30 Save-MSCatalogOutput -Update $updates -WorksheetName "January_2025_Updates" -Destination "C:\Reports\Updates.xlsx" ``` -------------------------------- ### Get Windows Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Retrieve Windows updates by searching for specific versions and architectures. Supports filtering by OS and architecture. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" ``` ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022 x64" ``` ```powershell Get-MSCatalogUpdate -Search "Servicing Stack Windows Server 2016 x64" ``` -------------------------------- ### Save-MSCatalogUpdate Source: https://context7.com/marco-online/mscataloglts/llms.txt Downloads update files (.msu, .cab, .exe) for a given MSCatalogUpdate object or GUID. Supports downloading all files and overwriting existing ones. ```APIDOC ## Save-MSCatalogUpdate ### Description Downloads `.msu`, `.cab`, `.exe`, or other update files associated with a given `MSCatalogUpdate` object or raw GUID. The destination directory is created automatically if it does not exist. By default only the first file is downloaded; use `-DownloadAll` to retrieve all files bundled with the update. Duplicate files are skipped unless `-Force` is specified. ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **Destination** (string) - Required - The directory path where update files will be downloaded. - **Update** (MSCatalogUpdate) - Optional - The `MSCatalogUpdate` object from which to download files. - **Guid** (string) - Optional - The GUID of the update to download files for. - **DownloadAll** (switch) - Optional - If specified, all bundled files for the update will be downloaded. Otherwise, only the first file is downloaded. - **Force** (switch) - Optional - If specified, duplicate files will be downloaded even if they already exist in the destination. ### Request Example ```powershell # Pipeline: search → select → download (single file) Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" # Pipeline: download ALL files for the first result (MSU + CAB + SSU) Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" -DownloadAll # Two-step: store update then download $update = Get-MSCatalogUpdate -Search "KB5078127" Save-MSCatalogUpdate -Update $update -Destination "C:\Updates" -DownloadAll # Download by known GUID directly Save-MSCatalogUpdate -Guid "f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea" -Destination "C:\Updates" -DownloadAll # Force overwrite existing files Save-MSCatalogUpdate -Guid "f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea" -Destination "C:\Updates" -DownloadAll -Force # WSUS/SCCM offline deployment — download to network share Get-MSCatalogUpdate -Search "KB5043178" -Architecture x64 | Save-MSCatalogUpdate -Destination "\\server\updates" -DownloadAll ``` ### Response #### Success Response (200) Indicates successful download of update files. Output messages detail the download progress and completion status. #### Response Example ``` Selected 1 update(s) from pipeline. Found 3 download link(s) for GUID 'f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea'. Downloading windows11.0-kb5078127-x64_....msu... Successfully downloaded file windows11.0-kb5078127-x64_....msu to C:\Updates Download complete: 3 of 3 files downloaded successfully. ``` ``` -------------------------------- ### Duplicate Detection with Append Mode Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Illustrates how append mode automatically detects and skips duplicate updates based on GUID when exporting to JSON. ```powershell # First run - exports 25 updates Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" # Second run - only adds new updates, skips duplicates Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" -Append # Output: "Appended 2 updates to JSON file (skipped 23 duplicates)" ``` -------------------------------- ### Get Edge Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Retrieve Microsoft Edge updates by specifying the channel (Stable, Dev). Filters by architecture. ```powershell Get-MSCatalogUpdate -Search "Edge x64" -IsStable ``` ```powershell Get-MSCatalogUpdate -Search "Edge x64" -IsDev ``` -------------------------------- ### Export Update Metadata to Excel with Save-MSCatalogOutput Source: https://context7.com/marco-online/mscataloglts/llms.txt Use `Save-MSCatalogOutput` to export `MSCatalogUpdate` objects to an Excel workbook. This requires the `ImportExcel` module. It handles creating workbooks and worksheets, deduplicates by GUID, and sorts worksheet tabs numerically. ```powershell # Prerequisite Install-Module -Name ImportExcel ``` ```powershell # Export a single update to Excel $update = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 Save-MSCatalogOutput -Update $update ` -Destination "C:\Reports\PatchReport.xlsx" ` -WorksheetName "Jan2026" ``` ```powershell # Loop: export multiple updates into separate monthly worksheet tabs $months = @("2026-01","2025-12","2025-11") foreach ($month in $months) { $updates = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -Date $month if ($updates) { Save-MSCatalogOutput -Update ($updates | Select-Object -First 1) ` -Destination "C:\Reports\PatchReport.xlsx" ` -WorksheetName $month } } # Result: PatchReport.xlsx with tabs sorted: 2025-11 | 2025-12 | 2026-01 ``` ```powershell # Pipeline: get last 30 days of updates and export the most recent one Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -LastDays 30 | Select-Object -First 1 | ForEach-Object { Save-MSCatalogOutput -Update $_ ` -Destination "C:\Reports\ServerUpdates.xlsx" ` -WorksheetName "Updates" } ``` -------------------------------- ### Append Updates to JSON File Source: https://context7.com/marco-online/mscataloglts/llms.txt Appends new search results to an existing JSON file, skipping duplicate entries based on GUID. ```powershell # Export to JSON (append with duplicate detection by GUID) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -LastDays 30 ` -ExportJson "C:\Updates\updates.json" -Append # Output: Appended 2 updates to JSON file: updates.json (skipped 23 duplicates) ``` -------------------------------- ### Get Recent Server Updates Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Retrieve updates for Windows Server 2022 released within the last 90 days. This is useful for identifying recent patches for server environments. ```powershell # Get Windows Server 2022 updates from last 90 days Get-MSCatalogUpdate -Search "Windows Server 2022" -LastDays 90 ``` -------------------------------- ### Working with MSCatalogUpdate Objects Source: https://context7.com/marco-online/mscataloglts/llms.txt The `MSCatalogUpdate` object, returned by `Get-MSCatalogUpdate`, contains detailed properties for updates. These properties can be used for filtering, pipeline processing, and export decisions. You can inspect all properties, filter by classification or size, and access specific properties like `Guid` for direct use in other cmdlets. ```powershell # Inspect all properties of a single update object $update = Get-MSCatalogUpdate -Search "KB5078127" $update | Format-List * ``` ```powershell # Filter result set by object properties $allUpdates = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -AllPages $securityOnly = $allUpdates | Where-Object { $_.Classification -eq "Security Updates" } $largeUpdates = $allUpdates | Where-Object { [double]($_.Size -replace ' MB$','') -gt 1000 } $recentUpdates = $allUpdates | Where-Object { $_.LastUpdated -gt (Get-Date).AddDays(-30) } ``` ```powershell # Access Guid for direct download $update = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 Save-MSCatalogUpdate -Guid $update.Guid -Destination "C:\Updates" -DownloadAll ``` ```powershell # Serialize to JSON manually $update | ConvertTo-Json -Depth 5 ``` -------------------------------- ### Get Latest Windows 11 Security Updates Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Retrieves the latest security updates for Windows 11 24H2 x64 released within the last 30 days. This is useful for patch management. ```powershell # Get latest Windows 11 security updates Get-MSCatalogUpdate -Search "Windows 11 24h2 x64" -UpdateType "Security Updates" -LastDays 30 ``` -------------------------------- ### Understanding -DownloadAll with Multiple Files Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Illustrates that a single update can contain multiple files, and -DownloadAll ensures all are retrieved. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" -IncludeFileNames | Select-Object -First 1 ``` -------------------------------- ### Include File Names in Output Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Demonstrates how to include the downloadable file names for updates in the output. ```powershell # Show downloadable file names Get-MSCatalogUpdate -Search "Windows 11 24H2" -IncludeFileNames ``` -------------------------------- ### Download Update Files with Save-MSCatalogUpdate Source: https://context7.com/marco-online/mscataloglts/llms.txt Use `Save-MSCatalogUpdate` to download update files like .msu, .cab, or .exe. The destination directory is created automatically. By default, only the first file is downloaded; use `-DownloadAll` to retrieve all files. Duplicate files are skipped unless `-Force` is specified. ```powershell # Pipeline: search → select → download (single file) Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" ``` ```powershell # Pipeline: download ALL files for the first result (MSU + CAB + SSU) Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" -DownloadAll ``` ```powershell # Two-step: store update then download $update = Get-MSCatalogUpdate -Search "KB5078127" Save-MSCatalogUpdate -Update $update -Destination "C:\Updates" -DownloadAll ``` ```powershell # Download by known GUID directly Save-MSCatalogUpdate -Guid "f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea" ` -Destination "C:\Updates" -DownloadAll ``` ```powershell # Force overwrite existing files Save-MSCatalogUpdate -Guid "f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea" ` -Destination "C:\Updates" -DownloadAll -Force ``` ```powershell # WSUS/SCCM offline deployment — download to network share Get-MSCatalogUpdate -Search "KB5043178" -Architecture x64 | Save-MSCatalogUpdate -Destination "\\server\updates" -DownloadAll ``` -------------------------------- ### Download and Save a Single Update Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Downloads the first found update matching the search criteria and saves it to the specified destination. The -DownloadAll parameter ensures the entire update package is downloaded. ```powershell # Get update and download $update = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 Save-MSCatalogUpdate -Update $update -Destination "C:\Updates" -DownloadAll # One-liner Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" -DownloadAll ``` -------------------------------- ### Format Output to File Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Demonstrates how to format the output of Get-MSCatalogUpdate to JSON, CSV, and XML files. ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022" -Format JSON | Out-File "updates.json" ``` ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022" -Format CSV | Out-File "updates.csv" ``` ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022" -Format XML | Out-File "updates.xml" ``` -------------------------------- ### Pipeline Operations: Filter and Export Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Shows how to filter updates by date and size, then export them to a CSV file. ```powershell # Filter and export Get-MSCatalogUpdate -Search "Windows Server 2022" -LastDays 30 | Where-Object { $_.Size -match "MB" } | Export-Csv "recent_updates.csv" ``` -------------------------------- ### Download Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Download update files for a specific update. Select the desired update first, then pipe it to Save-MSCatalogUpdate with the -DownloadAll switch. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" | Select-Object -First 1 | Save-MSCatalogUpdate -DownloadAll ``` -------------------------------- ### Download and Save Updates Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Use this command to search for a specific update (e.g., KB5043178) and save it to a network share. Ensure the destination path is accessible. ```powershell Get-MSCatalogUpdate -Search "KB5043178" -Architecture x64 | Save-MSCatalogUpdate -Destination "\\server\updates" -DownloadAll ``` -------------------------------- ### Select Specific Properties Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Shows how to select and display only specific properties of updates, such as Title, LastUpdated, and Size. ```powershell # Show only specific columns Get-MSCatalogUpdate -Search "Windows 11 24H2" -Properties Title,LastUpdated,Size ``` ```powershell # Combine with Format-Table Get-MSCatalogUpdate -Search "Windows 11 24H2" | Format-Table Title,Size,LastUpdated ``` -------------------------------- ### Retrieve .NET Framework Updates Source: https://context7.com/marco-online/mscataloglts/llms.txt Specifically searches for and retrieves .NET Framework updates for a given OS version. ```powershell # .NET Framework updates for Windows 11 24H2 Get-MSCatalogUpdate -Search "Windows 11 24H2" -GetFramework ``` -------------------------------- ### Save-MSCatalogUpdate: Basic Usage Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Shows basic usage of Save-MSCatalogUpdate to download a selected update to a specified destination. ```powershell # Get update and download $update = Get-MSCatalogUpdate -Search "Windows 11 24H2" | Select-Object -First 1 Save-MSCatalogUpdate -Update $update -Destination "C:\Updates" -DownloadAll ``` ```powershell # One-liner Get-MSCatalogUpdate -Search "Windows 11 24H2" | Select-Object -First 1 | Save-MSCatalogUpdate -Destination "C:\Updates" -DownloadAll ``` ```powershell # Download by GUID Save-MSCatalogUpdate -Guid "f0bc13c2-2bf2-42d0-a7a8-80fbd2ffe9ea" -Destination "C:\Updates" -DownloadAll ``` -------------------------------- ### Format Output as JSON String Source: https://context7.com/marco-online/mscataloglts/llms.txt Uses the legacy '-Format' parameter to output results as a JSON string, piped to a file. ```powershell # Return results as JSON string (legacy Format parameter) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -Format JSON | Out-File "updates.json" ``` -------------------------------- ### Search for Specific Windows Server Version Source: https://context7.com/marco-online/mscataloglts/llms.txt Demonstrates correct filtering for specific Windows Server versions, including the 'R2' suffix. ```powershell # Windows Server 2012 R2 (R2 suffix correctly filtered) Get-MSCatalogUpdate -Search "Windows Server 2012 R2 x64" ``` -------------------------------- ### Download a Specific Update Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Searches for an update by its KB number and pipes the result to Save-MSCatalogUpdate to download the update file to a specified destination directory. Ensure the destination directory exists. ```powershell # Search and download in one pipeline Get-MSCatalogUpdate -Search "KB5065426" | Save-MSCatalogUpdate -Destination "C:\Updates" ``` -------------------------------- ### Select Specific Output Properties Source: https://context7.com/marco-online/mscataloglts/llms.txt Retrieves update search results and selects only the 'Title', 'LastUpdated', and 'Size' properties. ```powershell # Select specific output columns Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -Properties Title, LastUpdated, Size ``` -------------------------------- ### Search for Servicing Stack Updates Source: https://context7.com/marco-online/mscataloglts/llms.txt Searches for Servicing Stack Updates, demonstrating auto-detection of the update type prefix. ```powershell # Servicing Stack Updates (update-type prefix auto-detected) Get-MSCatalogUpdate -Search "Servicing Stack Windows Server 2016 x64" ``` -------------------------------- ### Retrieve All Update Pages Source: https://context7.com/marco-online/mscataloglts/llms.txt Retrieves up to 1000 results by fetching all available pages for a given search query. ```powershell # Retrieve all pages (up to 1000 results) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -AllPages ``` -------------------------------- ### Search Windows Updates with Get-MSCatalogUpdate Source: https://context7.com/marco-online/mscataloglts/llms.txt Performs a basic search for Windows updates. Automatically uses strict matching for queries containing 'Windows'. ```powershell # Basic search — Windows 11 24H2 cumulative updates for x64 Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" # Output: # Search completed for: Cumulative Update for Windows 11 Version 24H2 for x64-based Systems # Found 2 updates # Title Products Classification LastUpdated Size # ----- -------- -------------- ----------- ---- # 2026-01 Cumulative Update for Windows 11 Version 24H2 for x64 (KB5078127) Windows 11 Updates 2026/01/24 4252.6 MB ``` ```powershell # Structured OS + Version parameters (equivalent to above) Get-MSCatalogUpdate -OperatingSystem "Windows 11" -Version "24H2" -Architecture x64 ``` -------------------------------- ### Search for .NET Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Finds .NET and .NET Framework updates. You can search for all architectures or filter for specific Windows versions and framework types. ```powershell # .NET 8.0 updates (all architectures) Get-MSCatalogUpdate -Search ".NET 8.0" ``` ```powershell # .NET Framework for specific Windows version Get-MSCatalogUpdate -Search ".NET Framework windows 11 24h2" ``` ```powershell # Only .NET Framework updates Get-MSCatalogUpdate -Search "Windows 11 24H2" -GetFramework ``` ```powershell # Exclude .NET Framework updates Get-MSCatalogUpdate -Search "Windows 11 24H2" -ExcludeFramework ``` -------------------------------- ### Basic Search for Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Performs a simple search for updates. By default, it returns the 25 most recent matching updates. Use -AllPages to retrieve up to 1000 results. ```powershell # Simple search (returns 25 most recent updates) Get-MSCatalogUpdate -Search "Windows 11 24H2" ``` ```powershell # Get all available results (up to 1000) Get-MSCatalogUpdate -Search "Windows 11 24H2" -AllPages ``` ```powershell # Smart search - automatically uses strict matching for Windows searches Get-MSCatalogUpdate -Search "Windows Server 2022" ``` ```powershell # Filter by architecture for the best results Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" ``` ```powershell # Alternative: specify the architecture using the -Architecture parameter: Get-MSCatalogUpdate -Search "Windows 11 24H2" -Architecture x64 ``` -------------------------------- ### Filter Updates by Size Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Filter updates by minimum size. Ensure the size unit (MB/GB) is specified if not using the default MB. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" -MinSize 500 ``` -------------------------------- ### Filter Updates by Size Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Find updates smaller than a specified size (e.g., 500MB) for Windows 10 version 1809. This helps manage bandwidth usage when downloading updates. ```powershell # Find updates smaller than 500MB Get-MSCatalogUpdate -Search "Windows 10 1809" -MaxSize 500 -SizeUnit MB ``` -------------------------------- ### Get-MSCatalogUpdate — Search and filter updates from Microsoft Update Catalog Source: https://context7.com/marco-online/mscataloglts/llms.txt Queries the Microsoft Update Catalog with a free-text search string or structured OS/Version parameters, applies multi-dimensional filtering (architecture, update type, date, size, .NET, Edge channel), and returns MSCatalogUpdate objects. Searches containing "Windows" automatically use strict (exact-phrase) matching. By default returns the 25 most recent updates sorted by date descending; use -AllPages to retrieve up to 1000 results. ```APIDOC ## Get-MSCatalogUpdate ### Description Queries the Microsoft Update Catalog with a free-text search string or structured OS/Version parameters, applies multi-dimensional filtering (architecture, update type, date, size, .NET, Edge channel), and returns `MSCatalogUpdate` objects. Searches containing "Windows" automatically use strict (exact-phrase) matching. By default returns the 25 most recent updates sorted by date descending; use `-AllPages` to retrieve up to 1000 results. ### Method `Get-MSCatalogUpdate` ### Parameters #### Path Parameters None #### Query Parameters - **Search** (string) - Required - Free-text search string or structured OS/Version parameters. - **OperatingSystem** (string) - Optional - Specifies the operating system. - **Version** (string) - Optional - Specifies the OS version. - **Architecture** (string) - Optional - Filters by architecture (e.g., x64). - **UpdateType** (string) - Optional - Filters by update type (e.g., "Security Updates"). - **LastDays** (int) - Optional - Filters updates from the last specified number of days. - **FromDate** (datetime) - Optional - Filters updates from a specific start date. - **ToDate** (datetime) - Optional - Filters updates to a specific end date. - **MinSize** (int) - Optional - Filters by minimum update size. - **MaxSize** (int) - Optional - Filters by maximum update size. - **SizeUnit** (string) - Optional - Unit for MinSize and MaxSize (e.g., MB). - **GetFramework** (switch) - Optional - Includes .NET Framework updates. - **IsStable** (switch) - Optional - Filters for stable channel updates (e.g., Microsoft Edge). - **ExcludeFramework** (switch) - Optional - Excludes .NET Framework updates. - **AllPages** (switch) - Optional - Retrieves up to 1000 results instead of the default 25. - **IncludeFileNames** (switch) - Optional - Includes file names in the results (requires an extra HTTP request per update). - **Properties** (string[]) - Optional - Specifies which properties to return (e.g., Title, LastUpdated, Size). - **ExportJson** (string) - Optional - Exports results to a JSON file. Can be used with `-Append`. - **ExportCsv** (string) - Optional - Exports results to a CSV file. - **ExportXml** (string) - Optional - Exports results to an XML file. - **Append** (switch) - Optional - Appends results to an existing export file, with duplicate detection by GUID. - **Format** (string) - Optional - Legacy parameter to specify output format (e.g., JSON). - **SortBy** (string) - Optional - Property to sort results by (e.g., Size, Date). - **Descending** (switch) - Optional - Sorts results in descending order. ### Request Example ```powershell # Basic search — Windows 11 24H2 cumulative updates for x64 Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" # Security updates only from the last 30 days Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -UpdateType "Security Updates" -LastDays 30 -ExcludeFramework # Export to JSON (overwrite) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -ExportJson "C:\Updates\updates.json" ``` ### Response #### Success Response (200) Returns `MSCatalogUpdate` objects with properties such as Title, Products, Classification, LastUpdated, Size, etc. The exact properties returned can be controlled using the `-Properties` parameter. #### Response Example ```json { "example": "Title : 2026-01 Cumulative Update for Windows 11 Version 24H2 for x64 (KB5078127)\nProducts : Windows 11\nClassification : Updates\nLastUpdated : 2026/01/24\nSize : 4252.6 MB" } ``` ``` -------------------------------- ### Filter Windows Updates by Date Range Source: https://context7.com/marco-online/mscataloglts/llms.txt Retrieves updates released within a specified date range. ```powershell # Date range filter Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" ` -FromDate "2025-06-01" ` -ToDate "2025-12-31" ``` -------------------------------- ### Search for Windows 11 Updates Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Searches the Microsoft Update Catalog for updates matching the specified criteria, such as 'Windows 11 24H2 x64'. The output displays details of found updates. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" ``` -------------------------------- ### Export Updates to CSV and XML Source: https://context7.com/marco-online/mscataloglts/llms.txt Exports search results to both CSV and XML files simultaneously. ```powershell # Export to CSV and XML simultaneously Get-MSCatalogUpdate -Search "Windows Server 2022 x64" ` -ExportCsv "C:\Updates\updates.csv" ` -ExportXml "C:\Updates\updates.xml" ``` -------------------------------- ### Export Updates to JSON Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Export search results to a JSON file. Use the -Append switch to add to an existing file. ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" ``` ```powershell Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" -Append ``` -------------------------------- ### Filter Windows Updates by Size Source: https://context7.com/marco-online/mscataloglts/llms.txt Filters updates to include only those between 100 MB and 500 MB. ```powershell # Size filter — updates between 100 MB and 500 MB Get-MSCatalogUpdate -Search "Windows 10 22H2 x64" -MinSize 100 -MaxSize 500 -SizeUnit MB ``` -------------------------------- ### Pipeline Operations: Store in Variable for Reuse Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Demonstrates storing the results of a search in a variable for subsequent filtering and display. ```powershell # Store in variable for reuse $updates = Get-MSCatalogUpdate -Search "Windows 11 24H2" -AllPages $updates | Where-Object Classification -eq "Security Updates" | Format-Table ``` -------------------------------- ### Export Updates to JSON Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Exports search results for Windows Server updates to a JSON file. The -Append parameter can be used to add new results to an existing file, automatically skipping duplicates. ```powershell # Export to JSON (overwrite) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -LastDays 30 -ExportJson "C:\Updates\Updates.json" # Export to JSON (append) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -ExportJson "C:\Updates\Updates.json" -Append When -Append is used, existing entries are preserved and duplicate updates are automatically skipped Output: Appended 2 updates to JSON file: updates.json (skipped 23 duplicates) ``` -------------------------------- ### Export Updates to JSON Source: https://context7.com/marco-online/mscataloglts/llms.txt Exports search results to a JSON file, overwriting the file if it already exists. ```powershell # Export to JSON (overwrite) Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -ExportJson "C:\Updates\updates.json" ``` -------------------------------- ### Search for .NET 8.0 Updates Source: https://context7.com/marco-online/mscataloglts/llms.txt Performs a free-text search for .NET 8.0 updates, disabling strict matching. ```powershell # .NET 8.0 updates (free search, no strict matching) Get-MSCatalogUpdate -Search ".NET 8.0" ``` -------------------------------- ### Sort Updates by Size Source: https://context7.com/marco-online/mscataloglts/llms.txt Sorts the search results by update size in descending order. ```powershell # Sort by size descending Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -SortBy Size -Descending ``` -------------------------------- ### Include File Names in Update Results Source: https://context7.com/marco-online/mscataloglts/llms.txt Retrieves update results and includes file names, which requires an additional HTTP request per update. ```powershell # Include file names in results (extra HTTP request per update) Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -IncludeFileNames | Select-Object -First 1 ``` -------------------------------- ### Filter Updates by Size Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Filters updates based on their size, allowing you to specify minimum, maximum, or a range of sizes. Units can be MB or GB. ```powershell # Updates larger than 500MB Get-MSCatalogUpdate -Search "Windows 11 24H2" -MinSize 500 -SizeUnit MB ``` ```powershell # Updates smaller than 1GB Get-MSCatalogUpdate -Search "Windows 11 24H2" -MaxSize 1 -SizeUnit GB ``` ```powershell # Updates between 100MB and 500MB Get-MSCatalogUpdate -Search "Windows 11 24H2" -MinSize 100 -MaxSize 500 ``` -------------------------------- ### Filter Updates by Date Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Filters search results to include updates released within a specified number of days or a custom date range. ```powershell # Updates from last 30 days Get-MSCatalogUpdate -Search "Windows Server 2022" -LastDays 30 ``` ```powershell # Updates within date range Get-MSCatalogUpdate -Search "Windows 11 24H2" -FromDate "2024-01-01" -ToDate "2024-12-31" ``` -------------------------------- ### Filter Windows Updates by Type and Date Source: https://context7.com/marco-online/mscataloglts/llms.txt Filters search results for security updates within the last 30 days and excludes .NET Framework updates. ```powershell # Security updates only from the last 30 days Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" ` -UpdateType "Security Updates" ` -LastDays 30 ` -ExcludeFramework ``` -------------------------------- ### Filter Updates by Date and Type Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Filter updates based on the last N days or specific update types like 'Security Updates'. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" -LastDays 30 ``` ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2" -UpdateType "Security Updates" ``` -------------------------------- ### Filter Microsoft Edge Updates by Channel Source: https://context7.com/marco-online/mscataloglts/llms.txt Filters search results to include only Microsoft Edge updates from the Stable channel. ```powershell # Microsoft Edge — Stable channel only Get-MSCatalogUpdate -Search "Edge x64" -IsStable ``` -------------------------------- ### Filter Updates by Type Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Filters search results to include specific types of updates, such as Security, Cumulative, or Critical Updates. Multiple types can be specified. ```powershell # Security updates only Get-MSCatalogUpdate -Search "Windows 11 24H2" -UpdateType "Security Updates" ``` ```powershell # Cumulative updates only Get-MSCatalogUpdate -Search "Windows Server 2022" -UpdateType "Cumulative Updates" ``` ```powershell # Multiple types Get-MSCatalogUpdate -Search "Windows 10" -UpdateType "Security Updates","Critical Updates" ``` -------------------------------- ### Sort Update Results Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Sorts the retrieved update results by date, size, or title. You can specify ascending or descending order. ```powershell # Sort by date (default, descending) Get-MSCatalogUpdate -Search "Windows 11 24H2" -SortBy Date -Descending ``` ```powershell # Sort by size (largest first) Get-MSCatalogUpdate -Search "Windows 11 24H2" -SortBy Size -Descending ``` ```powershell # Sort by title (alphabetically) Get-MSCatalogUpdate -Search "Windows 11 24H2" -SortBy Title ``` -------------------------------- ### Search for Windows Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Retrieves specific types of Windows updates, including cumulative, servicing stack, and version-specific updates. Filters by architecture are supported. ```powershell # Windows 11 cumulative updates Get-MSCatalogUpdate -Search "Windows 11 24H2" ``` ```powershell # Windows 10 specific version with architecture Get-MSCatalogUpdate -Search "Windows 10 1809 x64" ``` ```powershell # Windows Server updates Get-MSCatalogUpdate -Search "Windows Server 2022 x64" ``` ```powershell # Windows Server 2012 R2 (R2 filtering) Get-MSCatalogUpdate -Search "Windows Server 2012 R2" ``` ```powershell # Servicing Stack Updates only Get-MSCatalogUpdate -Search "Servicing Stack Windows Server 2016 x64" ``` -------------------------------- ### Save-MSCatalogOutput Source: https://context7.com/marco-online/mscataloglts/llms.txt Exports MSCatalogUpdate metadata to an Excel workbook (.xlsx) using the ImportExcel module. Supports creating new workbooks/worksheets and deduplicating entries. ```APIDOC ## Save-MSCatalogOutput ### Description Writes a single `MSCatalogUpdate` object into an Excel workbook (`.xlsx`) as a formatted table using the `ImportExcel` module. Creates the workbook and worksheet if they do not exist, deduplicates by GUID (checking both legacy `Guid` and new `UpdateID` column schemas), migrates legacy-schema sheets automatically, and sorts worksheet tabs numerically. Requires `Install-Module ImportExcel` as a prerequisite. ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters - **Update** (MSCatalogUpdate) - Required - The `MSCatalogUpdate` object to export. - **Destination** (string) - Required - The path to the Excel file (`.xlsx`) to create or append to. - **WorksheetName** (string) - Required - The name of the worksheet within the Excel file where the data will be written. ### Request Example ```powershell # Prerequisite # Install-Module -Name ImportExcel # Export a single update to Excel $update = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 Save-MSCatalogOutput -Update $update -Destination "C:\Reports\PatchReport.xlsx" -WorksheetName "Jan2026" # Loop: export multiple updates into separate monthly worksheet tabs $months = @("2026-01","2025-12","2025-11") foreach ($month in $months) { $updates = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -Date $month if ($updates) { Save-MSCatalogOutput -Update ($updates | Select-Object -First 1) -Destination "C:\Reports\PatchReport.xlsx" -WorksheetName $month } } # Pipeline: get last 30 days of updates and export the most recent one Get-MSCatalogUpdate -Search "Windows Server 2022 x64" -LastDays 30 | Select-Object -First 1 | ForEach-Object { Save-MSCatalogOutput -Update $_ -Destination "C:\Reports\ServerUpdates.xlsx" -WorksheetName "Updates" } ``` ### Response #### Success Response (200) Indicates successful export of update metadata to the specified Excel file and worksheet. The output messages may confirm the creation or update of the file. #### Response Example ``` # Result: PatchReport.xlsx with tabs sorted: 2025-11 | 2025-12 | 2026-01 ``` ``` -------------------------------- ### MSCatalogUpdate Object Properties Source: https://context7.com/marco-online/mscataloglts/llms.txt Details the properties available on the MSCatalogUpdate object, which is returned by Get-MSCatalogUpdate and can be used for filtering and further processing. ```APIDOC ## MSCatalogUpdate Object ### Description Every result from `Get-MSCatalogUpdate` is a strongly-typed `MSCatalogUpdate` object. Its properties can be used for downstream filtering, pipeline processing, and export decisions. ### Properties - **Title** (string) - The title of the update. - **Products** (string) - The product(s) the update applies to. - **Classification** (string) - The classification of the update (e.g., 'Security Updates', 'Updates'). - **LastUpdated** (DateTime) - The date and time the update was last updated. - **Version** (string) - The version number of the update. - **Size** (string) - The size of the update file (e.g., '4252.6 MB'). - **SizeInBytes** (long) - The size of the update file in bytes. - **Guid** (string) - The unique identifier (GUID) of the update. - **FileNames** (array of string) - List of associated file names for the update. - **SupportUrl** (string) - URL for support information related to the update. ### Usage Examples ```powershell # Inspect all properties of a single update object $update = Get-MSCatalogUpdate -Search "KB5078127" $update | Format-List * # Filter result set by object properties $allUpdates = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -AllPages $securityOnly = $allUpdates | Where-Object { $_.Classification -eq "Security Updates" } $largeUpdates = $allUpdates | Where-Object { [double]($_.Size -replace ' MB$','') -gt 1000 } $recentUpdates = $allUpdates | Where-Object { $_.LastUpdated -gt (Get-Date).AddDays(-30) } # Access Guid for direct download $update = Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" | Select-Object -First 1 Save-MSCatalogUpdate -Guid $update.Guid -Destination "C:\Updates" -DownloadAll # Serialize to JSON manually $update | ConvertTo-Json -Depth 5 ``` ``` -------------------------------- ### Complex Combined Filter for Updates Source: https://context7.com/marco-online/mscataloglts/llms.txt Applies multiple filters including date, architecture, update type, size, and framework exclusion, sorted by date descending. ```powershell # Complex combined filter Get-MSCatalogUpdate -Search "Windows 11 24H2" ` -LastDays 60 ` -Architecture x64 ` -UpdateType "Security Updates" ` -MinSize 100 ` -ExcludeFramework ` -SortBy Date ` -Descending ``` -------------------------------- ### Search for Microsoft Edge Updates Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Retrieves Microsoft Edge updates, with options to filter by channel (Stable, Extended Stable, Dev). ```powershell # All Edge updates Get-MSCatalogUpdate -Search "Edge x64" ``` ```powershell # Only Stable channel Get-MSCatalogUpdate -Search "Edge x64" -IsStable ``` ```powershell # Only Extended Stable channel Get-MSCatalogUpdate -Search "Edge x64" -IsExtendedStable ``` ```powershell # Only Dev channel Get-MSCatalogUpdate -Search "Edge x64" -IsDev ``` ```powershell # Multiple channels Get-MSCatalogUpdate -Search "Edge x64" -IsStable -IsExtendedStable ``` -------------------------------- ### Export Updates to JSON, CSV, or XML Source: https://github.com/marco-online/mscataloglts/wiki/MSCatalogLTS Exports the retrieved update information to various file formats including JSON, CSV, and XML. You can specify which properties to export and use append mode. ```powershell # Export to JSON Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" ``` ```powershell # Export to CSV Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportCsv "updates.csv" ``` ```powershell # Export to XML Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportXml "updates.xml" ``` ```powershell # Export with specific properties Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" -Properties Title,LastUpdated,Size ``` ```powershell # Append mode (with duplicate detection) Get-MSCatalogUpdate -Search "Windows Server 2022" -LastDays 30 -ExportJson "updates.json" -Append ``` ```powershell # Export to multiple formats at once Get-MSCatalogUpdate -Search "Windows Server 2022" -ExportJson "updates.json" -ExportCsv "updates.csv" ``` -------------------------------- ### Update MSCatalogLTS Module Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Updates the MSCatalogLTS module to the latest version available on the PowerShell Gallery. This command requires an active internet connection. ```powershell Update-Module -Name MSCatalogLTS ``` -------------------------------- ### Filter Updates by Date Range Source: https://github.com/marco-online/mscataloglts/blob/main/README.md Retrieves updates matching a search query within a specified date range. Use 'YYYY-MM-DD' format for dates. This is useful for finding updates released within a specific period. ```powershell Get-MSCatalogUpdate -Search "Windows 11 24H2 x64" -FromDate "2025-06-01" -ToDate "2025-07-01" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.