diff --git a/CHANGELOG.md b/CHANGELOG.md index 735290ff4..abab6b2d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,34 @@ All notable changes to this project will be documented in this file. -## Unreleased +## 26.8.5.1 - August 5, 2026 -## [26.8.1.1] - 2026-07-06 +### Added + +- **New private core operating system module helpers** — Added `Private/core-operatingsystem/Get-ModuleCoreOperatingSystems.ps1` and `Private/core-operatingsystem/Get-OSDCloudCoreOperatingSystems.ps1` to support normalized operating system catalog parsing for core selection and deployment workflows. +- **New private core device cache helpers** — Added `Private/core-device/Get-OSDCoreCacheDrive.ps1`, `Private/core-device/Get-OSDCoreCacheUSBPath.ps1`, and `Private/core-device/Test-OSDCoreCacheUSB.ps1`. + +### Changed + +- **Core operating system helper reorganization** — Moved operating system helper implementations into `Private/core-operatingsystem`, including `Get-OSDCoreOperatingSystems`, `Set-OSDCoreOperatingSystemCloudObject`, and `dev/Get-OSDCloudDefaultOS`. +- **Core driver pack helper reorganization** — Moved `Get-OSDCoreDriverPacks` implementation from `Public/core` to `Private/core-driverpack` as `Get-ModuleCoreDriverPacks`. +- **Core device/cache helper reorganization** — Moved cache and device implementations into `Private/core-device`, including `Get-OSDCoreCacheContent`, `Initialize-OSDCoreDevice`, and `Sync-OSDCoreDateTime`. +- **Recast USB cache updater relocation** — Moved `Update-RecastOSDCloudUSBCache` implementation from `Public/core-recast` to `Private/core-device`. +- **Recast CLI/GUI driver pack lookup update** — Updated `Start-RecastOSDCloudCLI` and `Start-RecastOSDCloudGUI` to use `Get-ModuleCoreDriverPacks` for manufacturer override resolution. +- **Module manifest metadata refresh** (`OSD.psd1`) — Bumped module version to `26.8.5.1` and replaced the module description with a multi-line summary that references `recastsoftware.com`. +- **Export surface cleanup** (`OSD.psd1`) — Removed direct exports for cache, device, driver pack catalog, and USB cache update commands that were migrated to internal/private implementations. +- **Help and docs refresh** — Updated `docs/Get-OSDCoreOperatingSystems.md` with expanded description/examples and regenerated `en-US/OSD-help.xml` to align with the refactored command surface. + +### Removed + +- **Deprecated generated docs for migrated internal commands** — Removed generated docs for cache, driver pack catalog, device initialization, USB cache test, and USB cache update command topics under `docs` (for example: `Get-OSDCoreCacheContent`, `Get-OSDCoreCacheDrive`, `Get-OSDCoreCacheUSBPath`, `Get-OSDCoreDriverPacks`, `Initialize-OSDCoreDevice`, `Test-OSDCoreCacheUSB`, `Update-RecastOSDCloudUSBCache`). + +## 26.8.1.1 - August 1, 2026 ### Changed - **`Invoke-OSDCloud` analytics instrumentation** (`Public/OSDCloud.ps1`) — Added deployment analytics event handling in the launch validation flow, including privacy-safe hashed device UUID generation for correlation and expanded deployment telemetry property collection. -- **`OSD.psd1`** — Bumped module version to `26.8.1.1` and updated generated-on date to `2026-07-06`. +- **`OSD.psd1`** — Bumped module version to `26.8.1.1`. ## 26.7.22.1 - July 22, 2026 diff --git a/OSD.psd1 b/OSD.psd1 index b060649ae..485f09134 100644 --- a/OSD.psd1 +++ b/OSD.psd1 @@ -8,7 +8,7 @@ @{ # --- Identity --- RootModule = 'OSD.psm1' - ModuleVersion = '26.8.2.1' + ModuleVersion = '26.8.5.1' CompatiblePSEditions = @('Core', 'Desktop') GUID = '9fe5b9b6-0224-4d87-9018-a8978529f6f5' @@ -16,7 +16,10 @@ Author = 'David Segura' CompanyName = 'Recast Software' Copyright = '(c) 2026 Recast Software. All rights reserved.' - Description = 'Root module for OSD.' + Description = @' +PowerShell module for OSD and OSDCloud v1 deployment automation from recastsoftware.com. +Includes operating system, driver pack, and device provisioning workflows. +'@ # --- Requirements --- PowerShellVersion = '5.1' @@ -33,22 +36,9 @@ 'Show-OSDCoreLicenseHelp', # RecastOSDCloud 'Start-RecastOSDCloudCLI', - 'Update-RecastOSDCloudUSBCache', # OSDCoreCache - 'Get-OSDCoreCacheContent', - 'Get-OSDCoreCacheDrive', - 'Get-OSDCoreCacheUSBPath', - 'Test-OSDCoreCacheUSB', - # OSDCoreDevice - 'Initialize-OSDCoreDevice', 'Get-OSDCoreDeploymentDisk', # OSDCoreDriverPack - 'Get-OSDCoreDriverPackCatalogDell', - 'Get-OSDCoreDriverPackCatalogHP', - 'Get-OSDCoreDriverPackCatalogLenovo', - 'Get-OSDCoreDriverPackCatalogPanasonic', - 'Get-OSDCoreDriverPackCatalogSurface', - 'Get-OSDCoreDriverPacks', 'Test-OSDCoreDriverPackCloudObject', # OSDCoreOperatingSystem 'Get-OSDCoreOperatingSystems', diff --git a/Private/core-dev/Start-RecastOSDCloudGUI.ps1 b/Private/core-dev/Start-RecastOSDCloudGUI.ps1 index 9bc47e463..949dfbe52 100644 --- a/Private/core-dev/Start-RecastOSDCloudGUI.ps1 +++ b/Private/core-dev/Start-RecastOSDCloudGUI.ps1 @@ -228,7 +228,7 @@ function Start-RecastOSDCloudGUI { # Resolve driver pack metadata for the detected device, with optional manufacturer overrides supplied by the caller. if ($PSBoundParameters.ContainsKey('OSDManufacturer')) { $global:OSDCoreDevice.OSDManufacturer = $OSDManufacturer - $global:OSDCoreDriverPacks = Get-OSDCoreDriverPacks -OSDManufacturer $OSDManufacturer + $global:OSDCoreDriverPacks = Get-ModuleCoreDriverPacks -OSDManufacturer $OSDManufacturer } # Resolve driver pack metadata for the detected device, with optional model overrides supplied by the caller. diff --git a/Public/core/OSDCoreCache.ps1 b/Private/core-device/Get-OSDCoreCacheContent.ps1 similarity index 57% rename from Public/core/OSDCoreCache.ps1 rename to Private/core-device/Get-OSDCoreCacheContent.ps1 index e397d1bfd..f3996fa6a 100644 --- a/Public/core/OSDCoreCache.ps1 +++ b/Private/core-device/Get-OSDCoreCacheContent.ps1 @@ -317,287 +317,3 @@ function Get-OSDCoreCacheContent { return $result } -function Get-OSDCoreCacheDrive { - <# - .SYNOPSIS - Returns OSDCloud cache drive metadata from local file system drives. - - .DESCRIPTION - Enumerates mounted file system drives that contain an OSDCloud cache path - and returns only USB, DriveRoot, VolumeLabel, and VolumeUniqueId properties. - - .PARAMETER Include - Optional list of drive letters to include when searching for OSDCloud cache - paths. Accepts values such as 'C', 'D:', or 'E:\'. - - When omitted, all mounted file system drive letters are considered. - - .PARAMETER Exclude - Optional list of drive letters to exclude when searching for OSDCloud cache - paths. Accepts values such as 'C', 'D:', or 'E:\'. - - Excluded drives are skipped even when they are also present in Include. - - .OUTPUTS - System.Object[]. Objects with USB, DriveRoot, VolumeLabel, and VolumeUniqueId. - - .EXAMPLE - Get-OSDCoreCacheDrive - - Returns OSDCloud cache drive metadata for all mounted file system drives. - - .EXAMPLE - Get-OSDCoreCacheDrive -Include C,D -Exclude D - - Returns OSDCloud cache drive metadata only for drive C. - - .LINK - https://github.com/OSDeploy/OSD/tree/master/docs - - .NOTES - Author: David Segura - Recast Software - 2026-07-18 - Initial function created - #> - [CmdletBinding()] - [OutputType([System.Object[]])] - param ( - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Include, - - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Exclude - ) - - function Get-DriveVolumeMetadata { - param( - [Parameter(Mandatory)] - [string]$DriveRoot - ) - - $volume = $null - $usb = $false - if ($DriveRoot -match '^[A-Z]:\\$') { - try { - $driveLetter = $DriveRoot.Substring(0, 1) - $volume = Get-Volume -DriveLetter $driveLetter -ErrorAction Stop - $usb = [bool](Get-Disk -ErrorAction SilentlyContinue | - Where-Object { $_.BusType -eq 'USB' } | - Get-Partition -ErrorAction SilentlyContinue | - Where-Object { $_.DriveLetter -eq $driveLetter }) - } catch { - $volume = $null - $usb = $false - } - } - - [PSCustomObject]@{ - USB = [bool]$usb - DriveRoot = $DriveRoot - VolumeLabel = if ($volume) { [string]$volume.FileSystemLabel } else { $null } - VolumeUniqueId = if ($volume) { [string]$volume.UniqueId } else { $null } - } - } - - function ConvertTo-DriveLetterList { - param( - [Parameter()] - [string[]]$DriveLetters - ) - - $normalized = foreach ($driveLetter in $DriveLetters) { - if ([string]::IsNullOrWhiteSpace($driveLetter)) { - continue - } - - $value = $driveLetter.Trim().TrimEnd('\\') - if ($value.Length -lt 1) { - continue - } - - $letter = $value.Substring(0, 1).ToUpperInvariant() - if ($letter -match '^[A-Z]$') { - $letter - } - } - - @($normalized | Sort-Object -Unique) - } - - $includedDriveLetters = ConvertTo-DriveLetterList -DriveLetters $Include - $excludedDriveLetters = ConvertTo-DriveLetterList -DriveLetters $Exclude - - $result = Get-PSDrive -PSProvider FileSystem | - Where-Object { $_.Root -match '^[A-Z]:\\$' } | - Where-Object { - $driveLetter = ([string]$_.Root).Substring(0, 1).ToUpperInvariant() - (($includedDriveLetters.Count -eq 0) -or ($driveLetter -in $includedDriveLetters)) -and - ($driveLetter -notin $excludedDriveLetters) - } | - ForEach-Object { - $driveRoot = [string]$_.Root - $osdCloudPath = Join-Path -Path $driveRoot -ChildPath 'OSDCloud' - - if (Test-Path -LiteralPath $osdCloudPath) { - Get-DriveVolumeMetadata -DriveRoot $driveRoot - } - } - - return @($result | Sort-Object -Property DriveRoot -Unique) -} -function Get-OSDCoreCacheUSBPath { - <# - .SYNOPSIS - Returns OSDCloud cache paths located on USB drives. - - .DESCRIPTION - Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns - the OSDCloud directory path for each discovered cache drive where USB is true, - the file system is NTFS or exFAT, and more than the specified free space is available. - - .PARAMETER Include - Optional list of drive letters to include when searching for OSDCloud cache - drives. Accepts values such as 'C', 'D:', or 'E:\'. - - When omitted, all mounted file system drive letters are considered. - - .PARAMETER Exclude - Optional list of drive letters to exclude when searching for OSDCloud cache - drives. Accepts values such as 'C', 'D:', or 'E:\'. - - Excluded drives are skipped even when they are also present in Include. - - .PARAMETER SizeRemaining - Optional minimum free space required on the USB cache drive, in GB. - - The default is 10 GB. - - .OUTPUTS - System.String[]. OSDCloud directory paths located on USB drives with more - than the specified GB free and an NTFS or exFAT file system. - - .EXAMPLE - Get-OSDCoreCacheUSBPath - - Returns OSDCloud directory paths for all discovered USB cache drives with more than 10 GB free and an NTFS or exFAT file system. - - .EXAMPLE - Get-OSDCoreCacheUSBPath -Include D - - Returns the OSDCloud directory path when drive D contains an OSDCloud cache path, is a USB drive, has more than 10 GB free, and is formatted NTFS or exFAT. - - .EXAMPLE - Get-OSDCoreCacheUSBPath -SizeRemaining 20 - - Returns OSDCloud directory paths for discovered USB cache drives with more than 20 GB free and an NTFS or exFAT file system. - - .LINK - https://github.com/OSDeploy/OSD/tree/master/docs - - .NOTES - Author: David Segura - Recast Software - 2026-07-18 - Initial function created - #> - [CmdletBinding()] - [OutputType([System.String[]])] - param ( - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Include, - - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Exclude, - - [Parameter()] - [ValidateRange(0, [int]::MaxValue)] - [int]$SizeRemaining = 10 - ) - - $cacheDriveParameters = @{} - if ($PSBoundParameters.ContainsKey('Include')) { - $cacheDriveParameters.Include = $Include - } - if ($PSBoundParameters.ContainsKey('Exclude')) { - $cacheDriveParameters.Exclude = $Exclude - } - - $minimumSizeRemaining = [int64]$SizeRemaining * 1GB - - $cacheUsb = Get-OSDCoreCacheDrive @cacheDriveParameters | - Where-Object { - $volume = $null - if ($_.USB -and $_.DriveRoot -match '^([A-Z]):\\$') { - try { - $volume = Get-Volume -DriveLetter $Matches[1] -ErrorAction Stop - } catch { - $volume = $null - } - } - - $volume -and - ($volume.FileSystem -in @('NTFS', 'exFAT')) -and - ([int64]$volume.SizeRemaining -gt $minimumSizeRemaining) - } | - ForEach-Object { Join-Path -Path $_.DriveRoot -ChildPath 'OSDCloud' } - - return @($cacheUsb | Sort-Object -Unique) -} -function Test-OSDCoreCacheUSB { - <# - .SYNOPSIS - Tests whether any OSDCloud cache drive is a USB drive. - - .DESCRIPTION - Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns - true when at least one discovered cache drive has USB set to true. - - .PARAMETER Include - Optional list of drive letters to include when searching for OSDCloud cache - drives. Accepts values such as 'C', 'D:', or 'E:\'. - - When omitted, all mounted file system drive letters are considered. - - .PARAMETER Exclude - Optional list of drive letters to exclude when searching for OSDCloud cache - drives. Accepts values such as 'C', 'D:', or 'E:\'. - - Excluded drives are skipped even when they are also present in Include. - - .OUTPUTS - System.Boolean. True when an OSDCloud cache drive is on USB; otherwise false. - - .EXAMPLE - Test-OSDCoreCacheUSB - - Returns true if any discovered OSDCloud cache drive is a USB drive. - - .EXAMPLE - Test-OSDCoreCacheUSB -Include D - - Returns true if drive D contains an OSDCloud cache path and is a USB drive. - - .LINK - https://github.com/OSDeploy/OSD/tree/master/docs - - .NOTES - Author: David Segura - Recast Software - 2026-07-18 - Initial function created - #> - [CmdletBinding()] - [OutputType([System.Boolean])] - param ( - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Include, - - [Parameter()] - [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] - [string[]]$Exclude - ) - - $cacheDrive = @(Get-OSDCoreCacheDrive @PSBoundParameters | Where-Object { $_.USB }) - - return [bool]($cacheDrive.Count -gt 0) -} diff --git a/Private/core-device/Get-OSDCoreCacheDrive.ps1 b/Private/core-device/Get-OSDCoreCacheDrive.ps1 new file mode 100644 index 000000000..6d65ffb3c --- /dev/null +++ b/Private/core-device/Get-OSDCoreCacheDrive.ps1 @@ -0,0 +1,129 @@ +function Get-OSDCoreCacheDrive { + <# + .SYNOPSIS + Returns OSDCloud cache drive metadata from local file system drives. + + .DESCRIPTION + Enumerates mounted file system drives that contain an OSDCloud cache path + and returns only USB, DriveRoot, VolumeLabel, and VolumeUniqueId properties. + + .PARAMETER Include + Optional list of drive letters to include when searching for OSDCloud cache + paths. Accepts values such as 'C', 'D:', or 'E:\'. + + When omitted, all mounted file system drive letters are considered. + + .PARAMETER Exclude + Optional list of drive letters to exclude when searching for OSDCloud cache + paths. Accepts values such as 'C', 'D:', or 'E:\'. + + Excluded drives are skipped even when they are also present in Include. + + .OUTPUTS + System.Object[]. Objects with USB, DriveRoot, VolumeLabel, and VolumeUniqueId. + + .EXAMPLE + Get-OSDCoreCacheDrive + + Returns OSDCloud cache drive metadata for all mounted file system drives. + + .EXAMPLE + Get-OSDCoreCacheDrive -Include C,D -Exclude D + + Returns OSDCloud cache drive metadata only for drive C. + + .LINK + https://github.com/OSDeploy/OSD/tree/master/docs + + .NOTES + Author: David Segura - Recast Software + 2026-07-18 - Initial function created + #> + [CmdletBinding()] + [OutputType([System.Object[]])] + param ( + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Include, + + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Exclude + ) + + function Get-DriveVolumeMetadata { + param( + [Parameter(Mandatory)] + [string]$DriveRoot + ) + + $volume = $null + $usb = $false + if ($DriveRoot -match '^[A-Z]:\\$') { + try { + $driveLetter = $DriveRoot.Substring(0, 1) + $volume = Get-Volume -DriveLetter $driveLetter -ErrorAction Stop + $usb = [bool](Get-Disk -ErrorAction SilentlyContinue | + Where-Object { $_.BusType -eq 'USB' } | + Get-Partition -ErrorAction SilentlyContinue | + Where-Object { $_.DriveLetter -eq $driveLetter }) + } catch { + $volume = $null + $usb = $false + } + } + + [PSCustomObject]@{ + USB = [bool]$usb + DriveRoot = $DriveRoot + VolumeLabel = if ($volume) { [string]$volume.FileSystemLabel } else { $null } + VolumeUniqueId = if ($volume) { [string]$volume.UniqueId } else { $null } + } + } + + function ConvertTo-DriveLetterList { + param( + [Parameter()] + [string[]]$DriveLetters + ) + + $normalized = foreach ($driveLetter in $DriveLetters) { + if ([string]::IsNullOrWhiteSpace($driveLetter)) { + continue + } + + $value = $driveLetter.Trim().TrimEnd('\\') + if ($value.Length -lt 1) { + continue + } + + $letter = $value.Substring(0, 1).ToUpperInvariant() + if ($letter -match '^[A-Z]$') { + $letter + } + } + + @($normalized | Sort-Object -Unique) + } + + $includedDriveLetters = ConvertTo-DriveLetterList -DriveLetters $Include + $excludedDriveLetters = ConvertTo-DriveLetterList -DriveLetters $Exclude + + $result = Get-PSDrive -PSProvider FileSystem | + Where-Object { $_.Root -match '^[A-Z]:\\$' } | + Where-Object { + $driveLetter = ([string]$_.Root).Substring(0, 1).ToUpperInvariant() + (($includedDriveLetters.Count -eq 0) -or ($driveLetter -in $includedDriveLetters)) -and + ($driveLetter -notin $excludedDriveLetters) + } | + ForEach-Object { + $driveRoot = [string]$_.Root + $osdCloudPath = Join-Path -Path $driveRoot -ChildPath 'OSDCloud' + + if (Test-Path -LiteralPath $osdCloudPath) { + Get-DriveVolumeMetadata -DriveRoot $driveRoot + } + } + + return @($result | Sort-Object -Property DriveRoot -Unique) +} diff --git a/Private/core-device/Get-OSDCoreCacheUSBPath.ps1 b/Private/core-device/Get-OSDCoreCacheUSBPath.ps1 new file mode 100644 index 000000000..813cb4378 --- /dev/null +++ b/Private/core-device/Get-OSDCoreCacheUSBPath.ps1 @@ -0,0 +1,98 @@ +function Get-OSDCoreCacheUSBPath { + <# + .SYNOPSIS + Returns OSDCloud cache paths located on USB drives. + + .DESCRIPTION + Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns + the OSDCloud directory path for each discovered cache drive where USB is true, + the file system is NTFS or exFAT, and more than the specified free space is available. + + .PARAMETER Include + Optional list of drive letters to include when searching for OSDCloud cache + drives. Accepts values such as 'C', 'D:', or 'E:\'. + + When omitted, all mounted file system drive letters are considered. + + .PARAMETER Exclude + Optional list of drive letters to exclude when searching for OSDCloud cache + drives. Accepts values such as 'C', 'D:', or 'E:\'. + + Excluded drives are skipped even when they are also present in Include. + + .PARAMETER SizeRemaining + Optional minimum free space required on the USB cache drive, in GB. + + The default is 10 GB. + + .OUTPUTS + System.String[]. OSDCloud directory paths located on USB drives with more + than the specified GB free and an NTFS or exFAT file system. + + .EXAMPLE + Get-OSDCoreCacheUSBPath + + Returns OSDCloud directory paths for all discovered USB cache drives with more than 10 GB free and an NTFS or exFAT file system. + + .EXAMPLE + Get-OSDCoreCacheUSBPath -Include D + + Returns the OSDCloud directory path when drive D contains an OSDCloud cache path, is a USB drive, has more than 10 GB free, and is formatted NTFS or exFAT. + + .EXAMPLE + Get-OSDCoreCacheUSBPath -SizeRemaining 20 + + Returns OSDCloud directory paths for discovered USB cache drives with more than 20 GB free and an NTFS or exFAT file system. + + .LINK + https://github.com/OSDeploy/OSD/tree/master/docs + + .NOTES + Author: David Segura - Recast Software + 2026-07-18 - Initial function created + #> + [CmdletBinding()] + [OutputType([System.String[]])] + param ( + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Include, + + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Exclude, + + [Parameter()] + [ValidateRange(0, [int]::MaxValue)] + [int]$SizeRemaining = 10 + ) + + $cacheDriveParameters = @{} + if ($PSBoundParameters.ContainsKey('Include')) { + $cacheDriveParameters.Include = $Include + } + if ($PSBoundParameters.ContainsKey('Exclude')) { + $cacheDriveParameters.Exclude = $Exclude + } + + $minimumSizeRemaining = [int64]$SizeRemaining * 1GB + + $cacheUsb = Get-OSDCoreCacheDrive @cacheDriveParameters | + Where-Object { + $volume = $null + if ($_.USB -and $_.DriveRoot -match '^([A-Z]):\\$') { + try { + $volume = Get-Volume -DriveLetter $Matches[1] -ErrorAction Stop + } catch { + $volume = $null + } + } + + $volume -and + ($volume.FileSystem -in @('NTFS', 'exFAT')) -and + ([int64]$volume.SizeRemaining -gt $minimumSizeRemaining) + } | + ForEach-Object { Join-Path -Path $_.DriveRoot -ChildPath 'OSDCloud' } + + return @($cacheUsb | Sort-Object -Unique) +} diff --git a/Public/core/Initialize-OSDCoreDevice.ps1 b/Private/core-device/Initialize-OSDCoreDevice.ps1 similarity index 99% rename from Public/core/Initialize-OSDCoreDevice.ps1 rename to Private/core-device/Initialize-OSDCoreDevice.ps1 index ffca04152..5aa0401a6 100644 --- a/Public/core/Initialize-OSDCoreDevice.ps1 +++ b/Private/core-device/Initialize-OSDCoreDevice.ps1 @@ -641,7 +641,7 @@ function Initialize-OSDCoreDevice { $null = Set-OSDCoreOperatingSystemCloudObject -OSArchitecture $ProcessorArchitecture #================================================= # OSDCoreDriverPacks - $global:OSDCoreDriverPacks = Get-OSDCoreDriverPacks -OSDManufacturer $OSDManufacturer + $global:OSDCoreDriverPacks = Get-ModuleCoreDriverPacks -OSDManufacturer $OSDManufacturer $global:OSDCoreDriverPackCloudObject = $global:OSDCoreDriverPacks | Where-Object { $_.SystemId -match $OSDProduct } | Select-Object -First 1 #================================================= # OSDCloudLogs diff --git a/Private/core/Sync-OSDCoreDateTime.ps1 b/Private/core-device/Sync-OSDCoreDateTime.ps1 similarity index 100% rename from Private/core/Sync-OSDCoreDateTime.ps1 rename to Private/core-device/Sync-OSDCoreDateTime.ps1 diff --git a/Private/core-device/Test-OSDCoreCacheUSB.ps1 b/Private/core-device/Test-OSDCoreCacheUSB.ps1 new file mode 100644 index 000000000..a8123cc75 --- /dev/null +++ b/Private/core-device/Test-OSDCoreCacheUSB.ps1 @@ -0,0 +1,57 @@ +function Test-OSDCoreCacheUSB { + <# + .SYNOPSIS + Tests whether any OSDCloud cache drive is a USB drive. + + .DESCRIPTION + Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns + true when at least one discovered cache drive has USB set to true. + + .PARAMETER Include + Optional list of drive letters to include when searching for OSDCloud cache + drives. Accepts values such as 'C', 'D:', or 'E:\'. + + When omitted, all mounted file system drive letters are considered. + + .PARAMETER Exclude + Optional list of drive letters to exclude when searching for OSDCloud cache + drives. Accepts values such as 'C', 'D:', or 'E:\'. + + Excluded drives are skipped even when they are also present in Include. + + .OUTPUTS + System.Boolean. True when an OSDCloud cache drive is on USB; otherwise false. + + .EXAMPLE + Test-OSDCoreCacheUSB + + Returns true if any discovered OSDCloud cache drive is a USB drive. + + .EXAMPLE + Test-OSDCoreCacheUSB -Include D + + Returns true if drive D contains an OSDCloud cache path and is a USB drive. + + .LINK + https://github.com/OSDeploy/OSD/tree/master/docs + + .NOTES + Author: David Segura - Recast Software + 2026-07-18 - Initial function created + #> + [CmdletBinding()] + [OutputType([System.Boolean])] + param ( + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Include, + + [Parameter()] + [ValidatePattern('^[a-zA-Z](:\\)?$|^[a-zA-Z]$')] + [string[]]$Exclude + ) + + $cacheDrive = @(Get-OSDCoreCacheDrive @PSBoundParameters | Where-Object { $_.USB }) + + return [bool]($cacheDrive.Count -gt 0) +} diff --git a/Public/core-recast/Update-RecastOSDCloudUSBCache.ps1 b/Private/core-device/Update-RecastOSDCloudUSBCache.ps1 similarity index 99% rename from Public/core-recast/Update-RecastOSDCloudUSBCache.ps1 rename to Private/core-device/Update-RecastOSDCloudUSBCache.ps1 index 35d962126..2a085126e 100644 --- a/Public/core-recast/Update-RecastOSDCloudUSBCache.ps1 +++ b/Private/core-device/Update-RecastOSDCloudUSBCache.ps1 @@ -213,7 +213,7 @@ function Update-RecastOSDCloudUSBCache { # Resolve driver pack metadata for the detected device, with optional manufacturer overrides supplied by the caller. if ($PSBoundParameters.ContainsKey('OSDManufacturer')) { $global:OSDCoreDevice.OSDManufacturer = $OSDManufacturer - $global:OSDCoreDriverPacks = Get-OSDCoreDriverPacks -OSDManufacturer $OSDManufacturer + $global:OSDCoreDriverPacks = Get-ModuleCoreDriverPacks -OSDManufacturer $OSDManufacturer } # Resolve driver pack metadata for the detected device, with optional model overrides supplied by the caller. diff --git a/Public/core/Get-OSDCoreDriverPacks.ps1 b/Private/core-driverpack/Get-ModuleCoreDriverPacks.ps1 similarity index 94% rename from Public/core/Get-OSDCoreDriverPacks.ps1 rename to Private/core-driverpack/Get-ModuleCoreDriverPacks.ps1 index edfb7da77..19731090e 100644 --- a/Public/core/Get-OSDCoreDriverPacks.ps1 +++ b/Private/core-driverpack/Get-ModuleCoreDriverPacks.ps1 @@ -1,4 +1,4 @@ -function Get-OSDCoreDriverPacks { +function Get-ModuleCoreDriverPacks { <# .SYNOPSIS Retrieves driver pack information for the specified manufacturer and operating system architecture. @@ -21,11 +21,11 @@ function Get-OSDCoreDriverPacks { Array of driver pack objects containing driver information for the specified manufacturer and architecture. .EXAMPLE - PS> Get-OSDCoreDriverPacks + PS> Get-ModuleCoreDriverPacks Returns driver packs for the current device's manufacturer and architecture. .EXAMPLE - PS> Get-OSDCoreDriverPacks -OSDManufacturer 'Dell' -ProcessorArchitecture 'amd64' + PS> Get-ModuleCoreDriverPacks -OSDManufacturer 'Dell' -ProcessorArchitecture 'amd64' Returns driver packs for Dell devices with AMD64 architecture. .NOTES diff --git a/Private/core-operatingsystem/Get-ModuleCoreOperatingSystems.ps1 b/Private/core-operatingsystem/Get-ModuleCoreOperatingSystems.ps1 new file mode 100644 index 000000000..d6acf73e6 --- /dev/null +++ b/Private/core-operatingsystem/Get-ModuleCoreOperatingSystems.ps1 @@ -0,0 +1,121 @@ +function Get-ModuleCoreOperatingSystems { + <# + .SYNOPSIS + Gets normalized module core operating system catalog records. + + .DESCRIPTION + Reads operating system catalog XML files from core\operatingsystems under the module root, + converts each PublishedMedia file node into a PowerShell object, removes excluded metadata + properties, and normalizes duplicate properties. Duplicate catalog rows are grouped by + FilePath, FileName, LanguageCode, and Architecture, then the preferred row is selected + by hash availability. + + .EXAMPLE + Get-ModuleCoreOperatingSystems + + Returns all normalized catalog records discovered in the module core operating systems cache. + + .EXAMPLE + Get-ModuleCoreOperatingSystems | Where-Object { $_.LanguageCode -eq 'en-us' } + + Returns only catalog records for en-us language media. + + .INPUTS + None + You cannot pipe input to this function. + + .OUTPUTS + PSCustomObject[] + Normalized raw catalog records imported from module XML metadata. + + .LINK + https://github.com/OSDeploy/OSD/tree/master/docs + + .NOTES + Author: David Segura - Recast Software + 2026-07-22 - Initial help block created + 2026-08-05 - Expanded help content and examples + #> + [CmdletBinding()] + [OutputType([pscustomobject[]])] + param () + + $ErrorActionPreference = 'Stop' + $records = @() + $mctRecords = @() + + $srcRoot = Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\operatingsystems' + + foreach ($file in (Get-ChildItem -Path $srcRoot -Filter '*.xml' -Recurse -File | Sort-Object FullName)) { + Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Importing $($file.FullName)" + + $xml = [xml](Get-Content -Path $file.FullName -Raw) + $fileNodes = $xml.MCT.Catalogs.Catalog.PublishedMedia.Files.File + + if (-not $fileNodes) { + continue + } + + foreach ($node in ($fileNodes | Sort-Object FileName, LanguageCode, Edition)) { + $properties = [ordered]@{ + Sha1 = $null + Sha256 = $null + } + + $excludedProperties = @('Edition', 'Key', 'Architecture_Loc', 'ArchitectureLoc', 'Edition_Loc', 'EditionLoc', 'IsRetailOnly') + + foreach ($child in $node.ChildNodes) { + if ($child.NodeType -ne [System.Xml.XmlNodeType]::Element) { + continue + } + + $name = $child.LocalName + $value = $child.InnerText + + if ($name -match '^Sha1$') { + $name = 'Sha1' + } + elseif ($name -match '^Sha256$') { + $name = 'Sha256' + } + + if ($excludedProperties -contains $name) { + continue + } + + if ($properties.Contains($name)) { + if ($name -in @('Sha1', 'Sha256') -or [string]::IsNullOrWhiteSpace($properties[$name])) { + $properties[$name] = $value + } + else { + $suffix = 2 + while ($properties.Contains("$name$suffix")) { + $suffix++ + } + $properties["$name$suffix"] = $value + } + } + else { + $properties[$name] = $value + } + } + + $mctRecords += [pscustomobject]$properties + } + } + + $mctRecords = $mctRecords | + Group-Object -Property FilePath, FileName, LanguageCode, Architecture | + ForEach-Object { + $_.Group | + Sort-Object -Property @{ Expression = { [string]::IsNullOrWhiteSpace($_.Sha256) }; Ascending = $true }, @{ Expression = { [string]::IsNullOrWhiteSpace($_.Sha1) }; Ascending = $true } | + Select-Object -First 1 + } | + Sort-Object -Property FilePath, FileName, LanguageCode, Architecture + + if (-not $mctRecords) { + return $records + } + + return $mctRecords +} diff --git a/Private/core-operatingsystem/Get-OSDCloudCoreOperatingSystems.ps1 b/Private/core-operatingsystem/Get-OSDCloudCoreOperatingSystems.ps1 new file mode 100644 index 000000000..1524b05a1 --- /dev/null +++ b/Private/core-operatingsystem/Get-OSDCloudCoreOperatingSystems.ps1 @@ -0,0 +1,151 @@ +function Get-OSDCloudCoreOperatingSystems { + <# + .SYNOPSIS + Gets parsed operating system records for OSDCloud selection workflows. + + .DESCRIPTION + Converts raw module catalog records from Get-ModuleCoreOperatingSystems into + normalized OSDCloud operating system objects. The function maps build numbers + to known Windows releases, derives build versions, normalizes architecture, + identifies activation channel, and emits sorted records with media metadata + such as language, size, file name, path, and hashes. + + .EXAMPLE + Get-OSDCloudCoreOperatingSystems + + Returns all available OSDCloud operating system records. + + .EXAMPLE + Get-OSDCloudCoreOperatingSystems | Where-Object { $_.OSName -eq 'Windows 11' } + + Returns only Windows 11 operating system records. + + .EXAMPLE + Get-OSDCloudCoreOperatingSystems | Group-Object OSArchitecture + + Groups results by normalized architecture. + + .INPUTS + None + You cannot pipe input to this function. + + .OUTPUTS + PSCustomObject[] + Parsed operating system records for OSDCloud catalog operations. + + .LINK + https://www.osdeploy.com/ + + .NOTES + Author: OSDeploy + 2026-08-05 - Standardized and expanded comment-based help + #> + [CmdletBinding()] + [OutputType([pscustomobject[]])] + param () + + $ErrorActionPreference = 'Stop' + $records = @() + $mctRecords = @() + + $mctRecords = Get-ModuleCoreOperatingSystems + + if (-not $mctRecords) { + return $records + } + + foreach ($node in ($mctRecords | Sort-Object FileName, LanguageCode, Architecture)) { + Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Processing $($node.FileName)" + + if ([string]::IsNullOrWhiteSpace($node.FileName) -or $node.FileName.Length -lt 5) { + continue + } + #================================================= + # OSBuild + # Get the OSBuild from the FileName + $OSBuild = $node.FileName.Substring(0, 5) + #================================================= + # OperatingSystem / OSName / OSVersion + # 19045 = Windows 10 22H2 + # 22000 = Windows 11 21H2 + # 22621 = Windows 11 22H2 + # 22631 = Windows 11 23H2 + # 26100 = Windows 11 24H2 + # 26200 = Windows 11 25H2 + # 28000 = Windows 11 26H1 + switch ($OSBuild) { + '19045' { $OperatingSystem = 'Windows 10 22H2'; $OSName = 'Windows 10'; $OSVersion = '22H2' } + '22000' { $OperatingSystem = 'Windows 11 21H2'; $OSName = 'Windows 11'; $OSVersion = '21H2' } + '22621' { $OperatingSystem = 'Windows 11 22H2'; $OSName = 'Windows 11'; $OSVersion = '22H2' } + '22631' { $OperatingSystem = 'Windows 11 23H2'; $OSName = 'Windows 11'; $OSVersion = '23H2' } + '26100' { $OperatingSystem = 'Windows 11 24H2'; $OSName = 'Windows 11'; $OSVersion = '24H2' } + '26200' { $OperatingSystem = 'Windows 11 25H2'; $OSName = 'Windows 11'; $OSVersion = '25H2' } + '28000' { $OperatingSystem = 'Windows 11 26H1'; $OSName = 'Windows 11'; $OSVersion = '26H1' } + default { continue } + } + #================================================= + # OSBuildVersion + # Combination of . + # Extract from FileName + #================================================= + $fileNameParts = $node.FileName -split '\.' + if ($fileNameParts.Count -lt 2) { + continue + } + $OSBuildVersion = "$($fileNameParts[0]).$($fileNameParts[1])" + #================================================= + # OSArchitecture + # Avoids confusion between x64 releases (amd64/arm64) + #================================================= + if ($node.Architecture -match 'x64') { + $OSArchitecture = 'amd64' + } elseif ($node.Architecture -match 'arm64') { + $OSArchitecture = 'arm64' + } else { + $OSArchitecture = 'x86' + continue + } + #================================================= + # OSActivation + #================================================= + if ($node.FileName -match 'clientconsumer_ret') { + $OSActivation = 'Retail' + } + elseif ($node.FileName -match 'CLIENTBUSINESS_VOL') { + $OSActivation = 'Volume' + } + else { + $OSActivation = 'Unknown' + continue + } + #================================================= + # Id + #================================================= + $Id = "$OperatingSystem $OSArchitecture $OSActivation $($node.LanguageCode) $OSBuildVersion" + #================================================= + # ObjectProperties + #================================================= + $records += [pscustomobject]@{ + Id = $Id + OperatingSystem = $OperatingSystem + OSName = $OSName + OSVersion = $OSVersion + OSArchitecture = $OSArchitecture + OSActivation = $OSActivation + OSLanguageCode = $node.LanguageCode + OSLanguage = $node.Language + OSBuild = $OSBuild + OSBuildVersion = $OSBuildVersion + # Architecture = $node.Architecture + Size = $node.Size + Sha1 = $node.Sha1 + Sha256 = $node.Sha256 + FileName = $node.FileName + FilePath = $node.FilePath + # IsRetailOnly = $node.IsRetailOnly + } + } + $records = $records | Sort-Object -Property FileName -Unique + $records = $records | Sort-Object -Property @{Expression = { $_.OperatingSystem }; Descending = $true }, OSArchitecture, OSActivation, OSLanguageCode + return $records +} diff --git a/Public/core/Get-OSDCoreOperatingSystems.ps1 b/Private/core-operatingsystem/Get-OSDCoreOperatingSystems.ps1 similarity index 67% rename from Public/core/Get-OSDCoreOperatingSystems.ps1 rename to Private/core-operatingsystem/Get-OSDCoreOperatingSystems.ps1 index 1a38273e7..e81e8e81c 100644 --- a/Public/core/Get-OSDCoreOperatingSystems.ps1 +++ b/Private/core-operatingsystem/Get-OSDCoreOperatingSystems.ps1 @@ -1,29 +1,37 @@ function Get-OSDCoreOperatingSystems { <# .SYNOPSIS - Gets the core operating system catalog entries that OSD uses for offline media selection. + Gets parsed OSD core operating system catalog entries. .DESCRIPTION - Imports the operating system catalog XML files stored under the module's core operating systems cache, - normalizes duplicate metadata, and returns a sorted list of operating system records with build, - architecture, language, activation, hash, and image metadata. + Imports normalized raw catalog records from Get-ModuleCoreOperatingSystems and + transforms them into OSD core operating system objects used by selection and + deployment workflows. The function derives build identity, Windows family and + release, normalized architecture, activation channel, and compatibility flags, + then returns unique sorted records. .EXAMPLE Get-OSDCoreOperatingSystems - Returns all available core operating system records discovered in the module cache. + Returns all available parsed core operating system records. .EXAMPLE Get-OSDCoreOperatingSystems | Where-Object Version -eq 'Windows 11' Returns only Windows 11 operating system records. + .EXAMPLE + Get-OSDCoreOperatingSystems | Where-Object { $_.Architecture -eq 'arm64' } + + Returns only arm64 operating system records. + .INPUTS - None. You cannot pipe input to this function. + None + You cannot pipe input to this function. .OUTPUTS - PSCustomObject - One or more normalized operating system records. + PSCustomObject[] + Parsed operating system records with OSD-specific properties. .LINK https://github.com/OSDeploy/OSD/tree/master/docs @@ -31,82 +39,17 @@ function Get-OSDCoreOperatingSystems { .NOTES Author: David Segura - Recast Software 2026-07-22 - Initial help block created + 2026-08-05 - Expanded help content and examples #> [CmdletBinding()] [OutputType([pscustomobject[]])] param () + $ErrorActionPreference = 'Stop' $records = @() $mctRecords = @() - $srcRoot = Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\operatingsystems' - - foreach ($file in (Get-ChildItem -Path $srcRoot -Filter '*.xml' -File | Sort-Object FullName)) { - Write-Verbose "[$(Get-Date -format s)] [$($MyInvocation.MyCommand.Name)] Importing $($file.FullName)" - - $xml = [xml](Get-Content -Path $file.FullName -Raw) - $fileNodes = $xml.MCT.Catalogs.Catalog.PublishedMedia.Files.File - - if (-not $fileNodes) { - continue - } - - foreach ($node in ($fileNodes | Sort-Object FileName, LanguageCode, Edition)) { - $properties = [ordered]@{ - Sha1 = $null - Sha256 = $null - } - - $excludedProperties = @('Edition', 'Key', 'Architecture_Loc', 'ArchitectureLoc', 'Edition_Loc', 'EditionLoc', 'IsRetailOnly') - - foreach ($child in $node.ChildNodes) { - if ($child.NodeType -ne [System.Xml.XmlNodeType]::Element) { - continue - } - - $name = $child.LocalName - $value = $child.InnerText - - if ($name -match '^Sha1$') { - $name = 'Sha1' - } - elseif ($name -match '^Sha256$') { - $name = 'Sha256' - } - - if ($excludedProperties -contains $name) { - continue - } - - if ($properties.Contains($name)) { - if ($name -in @('Sha1', 'Sha256') -or [string]::IsNullOrWhiteSpace($properties[$name])) { - $properties[$name] = $value - } - else { - $suffix = 2 - while ($properties.Contains("$name$suffix")) { - $suffix++ - } - $properties["$name$suffix"] = $value - } - } - else { - $properties[$name] = $value - } - } - - $mctRecords += [pscustomobject]$properties - } - } - - $mctRecords = $mctRecords | - Group-Object -Property FilePath, FileName, LanguageCode, Architecture | - ForEach-Object { - $_.Group | - Sort-Object -Property @{ Expression = { [string]::IsNullOrWhiteSpace($_.Sha256) }; Ascending = $true }, @{ Expression = { [string]::IsNullOrWhiteSpace($_.Sha1) }; Ascending = $true } | - Select-Object -First 1 - } | - Sort-Object -Property FilePath, FileName, LanguageCode, Architecture + $mctRecords = Get-ModuleCoreOperatingSystems if (-not $mctRecords) { return $records diff --git a/Public/core/Set-OSDCoreOperatingSystemCloudObject.ps1 b/Private/core-operatingsystem/Set-OSDCoreOperatingSystemCloudObject.ps1 similarity index 88% rename from Public/core/Set-OSDCoreOperatingSystemCloudObject.ps1 rename to Private/core-operatingsystem/Set-OSDCoreOperatingSystemCloudObject.ps1 index 5003a9610..100f6c45b 100644 --- a/Public/core/Set-OSDCoreOperatingSystemCloudObject.ps1 +++ b/Private/core-operatingsystem/Set-OSDCoreOperatingSystemCloudObject.ps1 @@ -33,12 +33,27 @@ function Set-OSDCoreOperatingSystemCloudObject { Selects the latest Windows 11 Retail amd64 en-us 25H2 catalog entry and sets $global:OSDCoreOperatingSystemCloudObject. + .EXAMPLE + Set-OSDCoreOperatingSystemCloudObject -OSActivation Volume -OSArchitecture arm64 -OSLanguageCode en-us -OSReleaseID 24H2 -RefreshCatalog + + Refreshes the catalog cache and selects the latest matching Volume arm64 record. + + .INPUTS + None + You cannot pipe input to this function. + + .OUTPUTS + PSCustomObject + The selected operating system object assigned to + $global:OSDCoreOperatingSystemCloudObject. + .LINK https://github.com/OSDeploy/OSD/tree/master/docs .NOTES Author: David Segura - Recast Software 2026-07-15 - Initial implementation to centralize OS catalog object selection. + 2026-08-05 - Expanded help content and examples #> [CmdletBinding()] [OutputType([pscustomobject])] diff --git a/Private/core-dev/Get-OSDCloudDefaultOS.ps1 b/Private/core-operatingsystem/dev/Get-OSDCloudDefaultOS.ps1 similarity index 74% rename from Private/core-dev/Get-OSDCloudDefaultOS.ps1 rename to Private/core-operatingsystem/dev/Get-OSDCloudDefaultOS.ps1 index 89d97da07..68e56419c 100644 --- a/Private/core-dev/Get-OSDCloudDefaultOS.ps1 +++ b/Private/core-operatingsystem/dev/Get-OSDCloudDefaultOS.ps1 @@ -1,23 +1,52 @@ function Get-OSDCloudDefaultOS { <# .SYNOPSIS - Returns the default OSDCloud operating system record. + Gets the default OSDCloud operating system record for the current context. .DESCRIPTION - Retrieves available OSDCloud operating systems and selects the first record - matching architecture and language preferences derived from environment and - global configuration values. + Retrieves operating system records from Get-OSDCloudCoreOperatingSystems and + applies architecture and language preference filters to select a single default + record. Language preference order is: + 1) $global:OSDCLOUD_OSLANGUAGECODE + 2) $env:OSDCLOUD_OSLANGUAGECODE + 3) Get-Culture Name + + Architecture selection uses $env:PROCESSOR_ARCHITECTURE when available. + The first matching record is returned after filters are applied. + + .EXAMPLE + Get-OSDCloudDefaultOS + + Returns the first matching operating system based on the current architecture + and language preference inputs. .EXAMPLE + $env:OSDCLOUD_OSLANGUAGECODE = 'en-us' Get-OSDCloudDefaultOS - Returns the first matching operating system entry for the current context. + + Returns an en-us operating system record when one exists for the selected + architecture. + + .EXAMPLE + $record = Get-OSDCloudDefaultOS + $record.FileName + + Returns the media filename for the selected default record. + + .INPUTS + None + You cannot pipe input to this function. + + .OUTPUTS + PSCustomObject + A single operating system catalog record. .LINK - https://github.com/OSDeploy/OSD/tree/master/docs + https://www.osdeploy.com/ .NOTES - Author: David Segura - Recast Software - 2026-07-16 - Moved help block inside function and normalized required sections + Author: OSDeploy + 2026-08-05 - Standardized and expanded comment-based help #> [CmdletBinding()] [OutputType([pscustomobject])] diff --git a/Public/core-recast/Start-RecastOSDCloudCLI.ps1 b/Public/core-recast/Start-RecastOSDCloudCLI.ps1 index f6a7463aa..f5e566982 100644 --- a/Public/core-recast/Start-RecastOSDCloudCLI.ps1 +++ b/Public/core-recast/Start-RecastOSDCloudCLI.ps1 @@ -210,7 +210,7 @@ function Start-RecastOSDCloudCLI { # Resolve driver pack metadata for the detected device, with optional manufacturer overrides supplied by the caller. if ($PSBoundParameters.ContainsKey('OSDManufacturer')) { $global:OSDCoreDevice.OSDManufacturer = $OSDManufacturer - $global:OSDCoreDriverPacks = Get-OSDCoreDriverPacks -OSDManufacturer $OSDManufacturer + $global:OSDCoreDriverPacks = Get-ModuleCoreDriverPacks -OSDManufacturer $OSDManufacturer } # Resolve driver pack metadata for the detected device, with optional model overrides supplied by the caller. diff --git a/docs/Get-OSDCoreCacheContent.md b/docs/Get-OSDCoreCacheContent.md deleted file mode 100644 index 6219c4170..000000000 --- a/docs/Get-OSDCoreCacheContent.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreCacheContent - -## SYNOPSIS -Returns cached OSDCloud content found on local file system drives. - -## SYNTAX - -``` -Get-OSDCoreCacheContent [[-Type] ] [[-Include] ] [[-Exclude] ] - [-ProgressAction ] [] -``` - -## DESCRIPTION -Enumerates mounted file system drives and discovers OSDCloud cache content. -Returns objects with Type, Name, FullName, SizeMB, -DriveRoot, VolumeLabel, VolumeUniqueId, and USB properties. -Exports the returned object to $env:Temp\OSDCoreCacheContent.xml each time the function runs. - -If Type is omitted, retur ns all supported cache content types. - -Type values: -- ESD: All .esd files under '\:\OSDCloud\OS' recursively. -- ISO: All .iso files under '\:\OSDCloud\ISO' recursively. -- DriverPacks: All .cab, .exe, .msi, and .zip files under - '\:\OSDCloud\DriverPacks' recursively. -- Drivers: Immediate folders under '\:\OSDCloud\Drivers' that - contain at least one .inf file in any child folder. - - Profiles: Immediate folders under '\:\OSDCloud\Profiles'. -- WIM: All .wim files under '\:\OSDCloud\WIM' recursively. -- *: Includes all supported Type values. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreCacheContent -``` - -Returns all supported cache content types. - -### EXAMPLE 2 -``` -Get-OSDCoreCacheContent -Type ESD -``` - -Returns all .esd files under each discovered cache OS folder. - -### EXAMPLE 3 -``` -Get-OSDCoreCacheContent -Type ESD,DriverPacks -``` - -Returns all .esd files and driver pack files from each discovered cache. - -### EXAMPLE 4 -``` -Get-OSDCoreCacheContent -Type * -``` - -Returns all supported cache content types. - -### EXAMPLE 5 -``` -Get-OSDCoreCacheContent -Include C,D -Exclude D -``` - -Searches only drive C for supported cache content types. - -## PARAMETERS - -### -Type -Optional cache content selector. - -Supports one or more values. -Use '*' to return all supported -cache content types. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Include -Optional list of drive letters to include when searching for OSDCloud cache -content. -Accepts values such as 'C', 'D:', or 'E:\'. - -When omitted, all mounted file system drive letters are considered. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Exclude -Optional list of drive letters to exclude when searching for OSDCloud cache -content. -Accepts values such as 'C', 'D:', or 'E:\'. - -Excluded drives are skipped even when they are also present in Include. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 3 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### System.Object[]. Objects with Type, Name, FullName, SizeMB, -### DriveRoot, VolumeLabel, VolumeUniqueId, and USB. -## NOTES - -## RELATED LINKS diff --git a/docs/Get-OSDCoreCacheDrive.md b/docs/Get-OSDCoreCacheDrive.md deleted file mode 100644 index c9cbdd100..000000000 --- a/docs/Get-OSDCoreCacheDrive.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreCacheDrive - -## SYNOPSIS -Returns OSDCloud cache drive metadata from local file system drives. - -## SYNTAX - -``` -Get-OSDCoreCacheDrive [[-Include] ] [[-Exclude] ] [-ProgressAction ] - [] -``` - -## DESCRIPTION -Enumerates mounted file system drives that contain an OSDCloud cache path -and returns only USB, DriveRoot, VolumeLabel, and VolumeUniqueId properties. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreCacheDrive -``` - -Returns OSDCloud cache drive metadata for all mounted file system drives. - -### EXAMPLE 2 -``` -Get-OSDCoreCacheDrive -Include C,D -Exclude D -``` - -Returns OSDCloud cache drive metadata only for drive C. - -## PARAMETERS - -### -Include -Optional list of drive letters to include when searching for OSDCloud cache -paths. -Accepts values such as 'C', 'D:', or 'E:\'. - -When omitted, all mounted file system drive letters are considered. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Exclude -Optional list of drive letters to exclude when searching for OSDCloud cache -paths. -Accepts values such as 'C', 'D:', or 'E:\'. - -Excluded drives are skipped even when they are also present in Include. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### System.Object[]. Objects with USB, DriveRoot, VolumeLabel, and VolumeUniqueId. -## NOTES -Author: David Segura - Recast Software -2026-07-18 - Initial function created - -## RELATED LINKS - -[https://github.com/OSDeploy/OSD/tree/master/docs](https://github.com/OSDeploy/OSD/tree/master/docs) - diff --git a/docs/Get-OSDCoreCacheUSBPath.md b/docs/Get-OSDCoreCacheUSBPath.md deleted file mode 100644 index 8afb1761a..000000000 --- a/docs/Get-OSDCoreCacheUSBPath.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreCacheUSBPath - -## SYNOPSIS -Returns OSDCloud cache paths located on USB drives. - -## SYNTAX - -``` -Get-OSDCoreCacheUSBPath [[-Include] ] [[-Exclude] ] [[-SizeRemaining] ] - [-ProgressAction ] [] -``` - -## DESCRIPTION -Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns -the OSDCloud directory path for each discovered cache drive where USB is true, -the file system is NTFS or exFAT, and more than the specified free space is available. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreCacheUSBPath -``` - -Returns OSDCloud directory paths for all discovered USB cache drives with more than 10 GB free and an NTFS or exFAT file system. - -### EXAMPLE 2 -``` -Get-OSDCoreCacheUSBPath -Include D -``` - -Returns the OSDCloud directory path when drive D contains an OSDCloud cache path, is a USB drive, has more than 10 GB free, and is formatted NTFS or exFAT. - -### EXAMPLE 3 -``` -Get-OSDCoreCacheUSBPath -SizeRemaining 20 -``` - -Returns OSDCloud directory paths for discovered USB cache drives with more than 20 GB free and an NTFS or exFAT file system. - -## PARAMETERS - -### -Include -Optional list of drive letters to include when searching for OSDCloud cache -drives. -Accepts values such as 'C', 'D:', or 'E:\'. - -When omitted, all mounted file system drive letters are considered. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Exclude -Optional list of drive letters to exclude when searching for OSDCloud cache -drives. -Accepts values such as 'C', 'D:', or 'E:\'. - -Excluded drives are skipped even when they are also present in Include. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -SizeRemaining -Optional minimum free space required on the USB cache drive, in GB. - -The default is 10 GB. - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: False -Position: 3 -Default value: 10 -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### System.String[]. OSDCloud directory paths located on USB drives with more -### than the specified GB free and an NTFS or exFAT file system. -## NOTES -Author: David Segura - Recast Software -2026-07-18 - Initial function created - -## RELATED LINKS - -[https://github.com/OSDeploy/OSD/tree/master/docs](https://github.com/OSDeploy/OSD/tree/master/docs) - diff --git a/docs/Get-OSDCoreDriverPackCatalogDell.md b/docs/Get-OSDCoreDriverPackCatalogDell.md deleted file mode 100644 index 9a2031546..000000000 --- a/docs/Get-OSDCoreDriverPackCatalogDell.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPackCatalogDell - -## SYNOPSIS -Downloads and parses the Dell driver pack catalog for Windows 11. - -## SYNTAX - -``` -Get-OSDCoreDriverPackCatalogDell [[-LocalDriverPackCatalog] ] [[-OemDriverPackCatalog] ] - [-Force] [-LocalOnly] [-ProgressAction ] [] -``` - -## DESCRIPTION -Retrieves the latest Dell DriverPackCatalog.cab from Dell's download site, -extracts and parses it to create a catalog of available Windows 11 driver packs. -If online retrieval fails, the function falls back to the bundled local catalog. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreDriverPackCatalogDell -``` - -Retrieves the Dell driver pack catalog for Windows 11. - -### EXAMPLE 2 -``` -Get-OSDCoreDriverPackCatalogDell -Force -``` - -Forces a fresh online download of the Dell catalog before parsing. - -### EXAMPLE 3 -``` -Get-OSDCoreDriverPackCatalogDell -LocalDriverPackCatalog 'C:\Catalogs\dell.xml' -``` - -Uses a custom local fallback catalog path. - -### EXAMPLE 4 -``` -Get-OSDCoreDriverPackCatalogDell -LocalOnly -``` - -Processes only local catalog values without any online download checks. - -## PARAMETERS - -### -LocalDriverPackCatalog -Path to the local fallback Dell catalog XML file. -This file is used when the -online catalog cannot be downloaded or extracted. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\dell.xml') -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OemDriverPackCatalog -URL to the online Dell DriverPack catalog CAB file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: Https://downloads.dell.com/catalog/DriverPackCatalog.cab -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Force -Forces download and rebuild of the temporary online catalog even when a -cached temp catalog file already exists. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalOnly -Uses only local catalog values and skips online catalog download/extraction. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### PSCustomObject[] -### Returns custom objects with driver pack information including Name, Model, -### SystemId, URL, ReleaseDate, and other metadata. -## NOTES -Catalog is downloaded from https://downloads.dell.com/catalog/DriverPackCatalog.cab - -## RELATED LINKS diff --git a/docs/Get-OSDCoreDriverPackCatalogHP.md b/docs/Get-OSDCoreDriverPackCatalogHP.md deleted file mode 100644 index 1f04068ad..000000000 --- a/docs/Get-OSDCoreDriverPackCatalogHP.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPackCatalogHP - -## SYNOPSIS -Downloads and parses the HP driver pack catalog for Windows 11. - -## SYNTAX - -``` -Get-OSDCoreDriverPackCatalogHP [[-LocalDriverPackCatalog] ] [[-OemDriverPackCatalog] ] [-Force] - [-LocalOnly] [-ProgressAction ] [] -``` - -## DESCRIPTION -Retrieves the latest HP Client Driver Pack Catalog from HP's cloud repository, -extracts and parses it to create a catalog of available Windows 11 driver packs. -Falls back to offline catalog if download fails. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreDriverPackCatalogHP -``` - -Retrieves the HP driver pack catalog for Windows 11. - -### EXAMPLE 2 -``` -Get-OSDCoreDriverPackCatalogHP -Force -``` - -Forces a refresh of the HP driver pack catalog by downloading the latest version -from HP's server, bypassing any cached copies. - -### EXAMPLE 3 -``` -Get-OSDCoreDriverPackCatalogHP -LocalOnly -``` - -Processes only local catalog values without any online download checks. - -## PARAMETERS - -### -LocalDriverPackCatalog -Path to the local fallback HP catalog XML file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\hp.xml') -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OemDriverPackCatalog -URL to the online HP driver pack catalog CAB file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: Https://hpia.hpcloud.hp.com/downloads/driverpackcatalog/HPClientDriverPackCatalog.cab -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Force -Forces download and rebuild of the temporary online catalog even when a -cached temp catalog file already exists. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalOnly -Uses only local catalog values and skips online catalog download/extraction. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### PSCustomObject[] -### Returns custom objects with driver pack information including Name, Model, -### SystemId, URL, ReleaseDate, and other metadata. -## NOTES -Catalog is downloaded from https://hpia.hpcloud.hp.com/downloads/driverpackcatalog/HPClientDriverPackCatalog.cab - -## RELATED LINKS diff --git a/docs/Get-OSDCoreDriverPackCatalogLenovo.md b/docs/Get-OSDCoreDriverPackCatalogLenovo.md deleted file mode 100644 index bc386e3a0..000000000 --- a/docs/Get-OSDCoreDriverPackCatalogLenovo.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPackCatalogLenovo - -## SYNOPSIS -Downloads and parses the Lenovo driver pack catalog for Windows 11. - -## SYNTAX - -``` -Get-OSDCoreDriverPackCatalogLenovo [[-LocalDriverPackCatalog] ] [[-OemDriverPackCatalog] ] - [-Force] [-LocalOnly] [-ProgressAction ] [] -``` - -## DESCRIPTION -Retrieves the latest Lenovo SCCM driver pack catalog from Lenovo's download site, -parses the XML to create a catalog of available Windows 11 driver packs. -Falls back to offline catalog if download fails. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreDriverPackCatalogLenovo -``` - -Retrieves the Lenovo driver pack catalog for Windows 11. - -### EXAMPLE 2 -``` -Get-OSDCoreDriverPackCatalogLenovo -Force -``` - -Forces a fresh online download of the Lenovo catalog before parsing. - -### EXAMPLE 3 -``` -Get-OSDCoreDriverPackCatalogLenovo -LocalOnly -``` - -Processes only local catalog values without any online download checks. - -## PARAMETERS - -### -LocalDriverPackCatalog -Path to the local fallback Lenovo catalog XML file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\lenovo.xml') -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OemDriverPackCatalog -URL to the online Lenovo driver pack catalog XML file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: Https://download.lenovo.com/cdrt/td/catalogv2.xml -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Force -Forces download and rebuild of the temporary online catalog even when a -cached temp catalog file already exists. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalOnly -Uses only local catalog values and skips online catalog download. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### PSCustomObject[] -### Returns custom objects with driver pack information including Name, Model, -### SystemId, URL, ReleaseDate, and other metadata. -## NOTES -Catalog is downloaded from https://download.lenovo.com/cdrt/td/catalogv2.xml - -## RELATED LINKS diff --git a/docs/Get-OSDCoreDriverPackCatalogPanasonic.md b/docs/Get-OSDCoreDriverPackCatalogPanasonic.md deleted file mode 100644 index 1e4da8a4d..000000000 --- a/docs/Get-OSDCoreDriverPackCatalogPanasonic.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPackCatalogPanasonic - -## SYNOPSIS -{{ Fill in the Synopsis }} - -## SYNTAX - -``` -Get-OSDCoreDriverPackCatalogPanasonic [[-LocalDriverPackCatalog] ] [[-OemDriverPackCatalog] ] - [-Force] [-LocalOnly] [-ProgressAction ] [] -``` - -## DESCRIPTION -{{ Fill in the Description }} - -## EXAMPLES - -### Example 1 -```powershell -PS C:\> {{ Add example code here }} -``` - -{{ Add example description here }} - -## PARAMETERS - -### -Force -{{ Fill Force Description }} - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalDriverPackCatalog -{{ Fill LocalDriverPackCatalog Description }} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalOnly -{{ Fill LocalOnly Description }} - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OemDriverPackCatalog -{{ Fill OemDriverPackCatalog Description }} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -### None - -## OUTPUTS - -### System.Object -## NOTES - -## RELATED LINKS diff --git a/docs/Get-OSDCoreDriverPackCatalogSurface.md b/docs/Get-OSDCoreDriverPackCatalogSurface.md deleted file mode 100644 index bbdfa5d6e..000000000 --- a/docs/Get-OSDCoreDriverPackCatalogSurface.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPackCatalogSurface - -## SYNOPSIS -Retrieves the Microsoft Surface driver pack catalog, enriching entries from live download pages. - -## SYNTAX - -``` -Get-OSDCoreDriverPackCatalogSurface [[-LocalDriverPackCatalog] ] [-Force] [-LocalOnly] - [-ProgressAction ] [] -``` - -## DESCRIPTION -Loads the bundled surface.json catalog as the offline base. -For entries that include an -UpdatePage URL, the function scrapes the corresponding Microsoft download page to find the -newest available MSI and updates FileName, Url, and ReleaseDate accordingly. -Results are cached in $env:TEMP so subsequent calls within the same session skip network -requests. -Falls back to base JSON values when a page cannot be reached. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreDriverPackCatalogSurface -``` - -Returns all Surface driver pack entries, with live URLs where available. - -### EXAMPLE 2 -``` -Get-OSDCoreDriverPackCatalogSurface -Verbose -``` - -Returns all Surface driver pack entries with verbose progress output. - -### EXAMPLE 3 -``` -Get-OSDCoreDriverPackCatalogSurface -Force -``` - -Bypasses the temp cache and rebuilds the enriched catalog. - -### EXAMPLE 4 -``` -Get-OSDCoreDriverPackCatalogSurface -LocalOnly -``` - -Processes only local catalog values without any live network checks. - -## PARAMETERS - -### -LocalDriverPackCatalog -Path to the local fallback Surface catalog JSON file. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\surface.json') -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Force -Forces bypass of the temp cache and rebuilds the enriched catalog from the -local Surface catalog. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LocalOnly -Uses only local catalog values and skips connectivity probing and all live -UpdatePage checks. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: - -Required: False -Position: Named -Default value: False -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### PSCustomObject[] -### Objects with CatalogVersion, ReleaseDate, Name, Manufacturer, Model, SystemId, FileName, -### Url, OperatingSystem, OSArchitecture, and HashMD5 properties. -## NOTES -Base catalog: core/driverpacks/surface.json (bundled with the module) -Temp cache: $env:TEMP\osdcloud-driverpack-surface.json - -## RELATED LINKS diff --git a/docs/Get-OSDCoreDriverPacks.md b/docs/Get-OSDCoreDriverPacks.md deleted file mode 100644 index 5bd5bff71..000000000 --- a/docs/Get-OSDCoreDriverPacks.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Get-OSDCoreDriverPacks - -## SYNOPSIS -Retrieves driver pack information for the specified manufacturer and operating system architecture. - -## SYNTAX - -``` -Get-OSDCoreDriverPacks [[-GenericDriverPackJson] ] [[-OSDManufacturer] ] - [[-ProcessorArchitecture] ] [-ProgressAction ] [] -``` - -## DESCRIPTION -Gets driver pack catalogs based on the device manufacturer and OS architecture. -For AMD64 architecture, -manufacturer-specific catalogs are loaded. -For ARM64 and other architectures, the default catalog is returned. -Supports Dell, HP, Lenovo, Microsoft (Surface), and generic devices. - -## EXAMPLES - -### EXAMPLE 1 -``` -Get-OSDCoreDriverPacks -Returns driver packs for the current device's manufacturer and architecture. -``` - -### EXAMPLE 2 -``` -Get-OSDCoreDriverPacks -OSDManufacturer 'Dell' -ProcessorArchitecture 'amd64' -Returns driver packs for Dell devices with AMD64 architecture. -``` - -## PARAMETERS - -### -GenericDriverPackJson -{{ Fill GenericDriverPackJson Description }} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\generic.json') -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSDManufacturer -The device manufacturer name. -Defaults to the value from $global:OSDCoreDevice.OSDManufacturer. -Supported values: Dell, HP, Lenovo, Microsoft, or any other value will use the Default catalog. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: $global:OSDCoreDevice.OSDManufacturer -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProcessorArchitecture -The operating system architecture. -Defaults to the value from $global:OSDCoreDevice.ProcessorArchitecture. -Typically 'amd64' or 'arm64'. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 3 -Default value: $env:PROCESSOR_ARCHITECTURE -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### PSCustomObject -### Array of driver pack objects containing driver information for the specified manufacturer and architecture. -## NOTES -Requires manufacturer-specific cmdlets (Get-OSDCoreDriverPackCatalogDell, Get-OSDCoreDriverPackCatalogHP, etc.) to be available. - -## RELATED LINKS diff --git a/docs/Get-OSDCoreOperatingSystems.md b/docs/Get-OSDCoreOperatingSystems.md index 89d92a797..415ff0c49 100644 --- a/docs/Get-OSDCoreOperatingSystems.md +++ b/docs/Get-OSDCoreOperatingSystems.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-OSDCoreOperatingSystems ## SYNOPSIS -Gets the core operating system catalog entries that OSD uses for offline media selection. +Gets parsed OSD core operating system catalog entries. ## SYNTAX @@ -17,9 +17,12 @@ Get-OSDCoreOperatingSystems [-ProgressAction ] [] [] -``` - -## DESCRIPTION -Initialize-OSDCoreDevice gathers device information from CIM classes, firmware, -and environment data, then normalizes manufacturer/model/product values for -workflow use. -It writes diagnostic logs to $env:TEMP\osdcloud-logs, attempts to -copy logs to an available OSDCloudLogs path, and populates -$global:OSDCoreDevice with an ordered property set used by downstream OSDCloud -deployment logic. - -## EXAMPLES - -### EXAMPLE 1 -``` -Initialize-OSDCoreDevice -``` - -Collects current device metadata, creates or updates -$global:OSDCoreDevice, and writes log artifacts for troubleshooting. - -## PARAMETERS - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### None. This function does not emit pipeline output. -## NOTES -Side effects: -- Clears the current PowerShell error collection. -- Updates date/time in WinPE when needed. -- Writes logs to $env:TEMP\osdcloud-logs. -- Sets $global:OSDCoreDevice. - -## RELATED LINKS diff --git a/docs/Test-OSDCoreCacheUSB.md b/docs/Test-OSDCoreCacheUSB.md deleted file mode 100644 index d5e2cecd2..000000000 --- a/docs/Test-OSDCoreCacheUSB.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Test-OSDCoreCacheUSB - -## SYNOPSIS -Tests whether any OSDCloud cache drive is a USB drive. - -## SYNTAX - -``` -Test-OSDCoreCacheUSB [[-Include] ] [[-Exclude] ] [-ProgressAction ] - [] -``` - -## DESCRIPTION -Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns -true when at least one discovered cache drive has USB set to true. - -## EXAMPLES - -### EXAMPLE 1 -``` -Test-OSDCoreCacheUSB -``` - -Returns true if any discovered OSDCloud cache drive is a USB drive. - -### EXAMPLE 2 -``` -Test-OSDCoreCacheUSB -Include D -``` - -Returns true if drive D contains an OSDCloud cache path and is a USB drive. - -## PARAMETERS - -### -Include -Optional list of drive letters to include when searching for OSDCloud cache -drives. -Accepts values such as 'C', 'D:', or 'E:\'. - -When omitted, all mounted file system drive letters are considered. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Exclude -Optional list of drive letters to exclude when searching for OSDCloud cache -drives. -Accepts values such as 'C', 'D:', or 'E:\'. - -Excluded drives are skipped even when they are also present in Include. - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -### System.Boolean. True when an OSDCloud cache drive is on USB; otherwise false. -## NOTES -Author: David Segura - Recast Software -2026-07-18 - Initial function created - -## RELATED LINKS - -[https://github.com/OSDeploy/OSD/tree/master/docs](https://github.com/OSDeploy/OSD/tree/master/docs) - diff --git a/docs/Update-RecastOSDCloudUSBCache.md b/docs/Update-RecastOSDCloudUSBCache.md deleted file mode 100644 index 88b774daf..000000000 --- a/docs/Update-RecastOSDCloudUSBCache.md +++ /dev/null @@ -1,215 +0,0 @@ ---- -external help file: OSD-help.xml -Module Name: OSD -online version: https://github.com/OSDeploy/OSD/tree/master/docs -schema: 2.0.0 ---- - -# Update-RecastOSDCloudUSBCache - -## SYNOPSIS -Starts the Recast OSDCloud command-line deployment workflow. - -## SYNTAX - -``` -Update-RecastOSDCloudUSBCache [[-OSArchitecture] ] [[-OSReleaseID] ] - [[-OSLanguageCode] ] [[-OSActivation] ] [[-OSEdition] ] [[-OSDManufacturer] ] - [[-OSDModel] ] [[-OSDProduct] ] [[-WinPEPostAction] ] - [-ProgressAction ] [] -``` - -## DESCRIPTION -Initializes device and deployment context, discovers matching operating systems, -resolves driver pack metadata for the current device (or supplied overrides), -validates required dependencies, and prepares global state consumed by -the Recast OSDCloud CLI workflow. - -## EXAMPLES - -### EXAMPLE 1 -``` -Update-RecastOSDCloudUSBCache -Updates the Recast OSDCloud USB cache using detected device values and default deployment selection. -``` - -### EXAMPLE 2 -``` -Update-RecastOSDCloudUSBCache -OSArchitecture arm64 -OSEdition Pro -OSReleaseID 24H2 -Updates the Recast OSDCloud USB cache for an ARM64 Windows 11 Pro 24H2 deployment selection. -``` - -## PARAMETERS - -### -OSArchitecture -Operating system architecture used when selecting catalog entries. -Supported values are amd64 and arm64. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 1 -Default value: $env:PROCESSOR_ARCHITECTURE -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSReleaseID -Operating system release identifier used for catalog selection. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 2 -Default value: 25H2 -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSLanguageCode -Operating system language code used for catalog selection. -If not specified, the value is inferred from the current keyboard layout. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 3 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSActivation -Operating system activation channel used for catalog selection. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 4 -Default value: Retail -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSEdition -Operating system edition used for catalog selection. -Valid values depend on OSArchitecture at runtime. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 5 -Default value: Pro -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSDManufacturer -Overrides the detected computer manufacturer for driver pack matching. -If omitted, the detected device manufacturer is used. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 6 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSDModel -Overrides the detected computer model for logging and context alignment. -If omitted, the detected device model is used. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 7 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -OSDProduct -Overrides the detected computer product/system ID for driver pack matching. -If omitted, the detected device product value is used. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 8 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -WinPEPostAction -Specifies the action to take after the WinPE deployment workflow completes. - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: False -Position: 9 -Default value: Quit -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ProgressAction -{{ Fill ProgressAction Description }} - -```yaml -Type: ActionPreference -Parameter Sets: (All) -Aliases: proga - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). - -## INPUTS - -## OUTPUTS - -## NOTES -Author: David Segura - Recast Software -2026-07-09 - Standardized comment-based help metadata and links. -2026-07-14 - Updated help content for CLI-specific behavior and parameter documentation. - -## RELATED LINKS - -[https://github.com/OSDeploy/OSD/tree/master/docs](https://github.com/OSDeploy/OSD/tree/master/docs) - diff --git a/en-US/OSD-help.xml b/en-US/OSD-help.xml index d3266b1a6..e521cd76a 100644 --- a/en-US/OSD-help.xml +++ b/en-US/OSD-help.xml @@ -16408,43 +16408,35 @@ Runs Get-OSDCloudWorkspace with common parameters. - Get-OSDCoreCacheContent + Get-OSDCoreDeploymentDisk Get - OSDCoreCacheContent + OSDCoreDeploymentDisk - Returns cached OSDCloud content found on local file system drives. + Retrieves disk objects suitable for OS deployment with enhanced filtering capabilities. - Enumerates mounted file system drives and discovers OSDCloud cache content. Returns objects with Type, Name, FullName, SizeMB, DriveRoot, VolumeLabel, VolumeUniqueId, and USB properties. Exports the returned object to $env:Temp\OSDCoreCacheContent.xml each time the function runs. - If Type is omitted, retur ns all supported cache content types. - Type values: - ESD: All .esd files under '<DriveLetter>:\OSDCloud\OS' recursively. - - ISO: All .iso files under '<DriveLetter>:\OSDCloud\ISO' recursively. - - DriverPacks: All .cab, .exe, .msi, and .zip files under - '<DriveLetter>:\OSDCloud\DriverPacks' recursively. - Drivers: Immediate folders under '<DriveLetter>:\OSDCloud\Drivers' that contain at least one .inf file in any child folder. - Profiles: Immediate folders under '<DriveLetter>:\OSDCloud\Profiles'. - WIM: All .wim files under '<DriveLetter>:\OSDCloud\WIM' recursively. - - *: Includes all supported Type values. + Get-OSDCoreDeploymentDisk queries the system for physical disks and returns disk objects with extended properties including MediaType. The function automatically filters out offline disks, disks with no media, and incompatible bus types (USB, Virtual, etc.). It provides comprehensive filtering options based on disk properties such as boot status, bus type, media type, and partition style. - Get-OSDCoreCacheContent - - Type + Get-OSDCoreDeploymentDisk + + Number - Optional cache content selector. - Supports one or more values. Use '*' to return all supported cache content types. + Specifies the disk number to retrieve. Can also be referenced using aliases 'Disk' or 'DiskNumber'. - String[] + UInt32 - String[] + UInt32 - None + 0 - Include + BusType - Optional list of drive letters to include when searching for OSDCloud cache content. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. + Filters disks by one or more specific bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' String[] @@ -16454,186 +16446,9 @@ Runs Get-OSDCloudWorkspace with common parameters. None - Exclude - - Optional list of drive letters to exclude when searching for OSDCloud cache content. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. - - String[] - - String[] - - - None - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Type - - Optional cache content selector. - Supports one or more values. Use '*' to return all supported cache content types. - - String[] - - String[] - - - None - - - Include - - Optional list of drive letters to include when searching for OSDCloud cache content. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. - - String[] - - String[] - - - None - - - Exclude - - Optional list of drive letters to exclude when searching for OSDCloud cache content. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. - - String[] - - String[] - - - None - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - System.Object[]. Objects with Type, Name, FullName, SizeMB, - - - - - - - - DriveRoot, VolumeLabel, VolumeUniqueId, and USB. - - - - - - - - - - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreCacheContent - - Returns all supported cache content types. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreCacheContent -Type ESD - - Returns all .esd files under each discovered cache OS folder. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreCacheContent -Type ESD,DriverPacks - - Returns all .esd files and driver pack files from each discovered cache. - - - - -------------------------- EXAMPLE 4 -------------------------- - Get-OSDCoreCacheContent -Type * - - Returns all supported cache content types. - - - - -------------------------- EXAMPLE 5 -------------------------- - Get-OSDCoreCacheContent -Include C,D -Exclude D - - Searches only drive C for supported cache content types. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreCacheDrive - Get - OSDCoreCacheDrive - - Returns OSDCloud cache drive metadata from local file system drives. - - - - Enumerates mounted file system drives that contain an OSDCloud cache path and returns only USB, DriveRoot, VolumeLabel, and VolumeUniqueId properties. - - - - Get-OSDCoreCacheDrive - - Include - - Optional list of drive letters to include when searching for OSDCloud cache paths. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. - - String[] - - String[] - - - None - - - Exclude + BusTypeNot - Optional list of drive letters to exclude when searching for OSDCloud cache paths. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. + Excludes disks with specified bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' String[] @@ -16642,1441 +16457,80 @@ Runs Get-OSDCloudWorkspace with common parameters. None - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Include - - Optional list of drive letters to include when searching for OSDCloud cache paths. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. - - String[] - - String[] - - - None - - - Exclude - - Optional list of drive letters to exclude when searching for OSDCloud cache paths. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. - - String[] - - String[] - - - None - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - System.Object[]. Objects with USB, DriveRoot, VolumeLabel, and VolumeUniqueId. - - - - - - - - - Author: David Segura - Recast Software 2026-07-18 - Initial function created - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreCacheDrive - - Returns OSDCloud cache drive metadata for all mounted file system drives. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreCacheDrive -Include C,D -Exclude D - - Returns OSDCloud cache drive metadata only for drive C. - - - - - - https://github.com/OSDeploy/OSD/tree/master/docs - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreCacheUSBPath - Get - OSDCoreCacheUSBPath - - Returns OSDCloud cache paths located on USB drives. - - - - Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns the OSDCloud directory path for each discovered cache drive where USB is true, the file system is NTFS or exFAT, and more than the specified free space is available. - - - - Get-OSDCoreCacheUSBPath - - Include - - Optional list of drive letters to include when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. - - String[] - - String[] - - - None - - - Exclude - - Optional list of drive letters to exclude when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. - - String[] - - String[] - - - None - - - SizeRemaining - - Optional minimum free space required on the USB cache drive, in GB. - The default is 10 GB. - - Int32 - - Int32 - - - 10 - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Include - - Optional list of drive letters to include when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. - - String[] - - String[] - - - None - - - Exclude - - Optional list of drive letters to exclude when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. - - String[] - - String[] - - - None - - - SizeRemaining - - Optional minimum free space required on the USB cache drive, in GB. - The default is 10 GB. - - Int32 - - Int32 - - - 10 - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - System.String[]. OSDCloud directory paths located on USB drives with more - - - - - - - - than the specified GB free and an NTFS or exFAT file system. - - - - - - - - - Author: David Segura - Recast Software 2026-07-18 - Initial function created - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreCacheUSBPath - - Returns OSDCloud directory paths for all discovered USB cache drives with more than 10 GB free and an NTFS or exFAT file system. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreCacheUSBPath -Include D - - Returns the OSDCloud directory path when drive D contains an OSDCloud cache path, is a USB drive, has more than 10 GB free, and is formatted NTFS or exFAT. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreCacheUSBPath -SizeRemaining 20 - - Returns OSDCloud directory paths for discovered USB cache drives with more than 20 GB free and an NTFS or exFAT file system. - - - - - - https://github.com/OSDeploy/OSD/tree/master/docs - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDeploymentDisk - Get - OSDCoreDeploymentDisk - - Retrieves disk objects suitable for OS deployment with enhanced filtering capabilities. - - - - Get-OSDCoreDeploymentDisk queries the system for physical disks and returns disk objects with extended properties including MediaType. The function automatically filters out offline disks, disks with no media, and incompatible bus types (USB, Virtual, etc.). It provides comprehensive filtering options based on disk properties such as boot status, bus type, media type, and partition style. - - - - Get-OSDCoreDeploymentDisk - - Number - - Specifies the disk number to retrieve. Can also be referenced using aliases 'Disk' or 'DiskNumber'. - - UInt32 - - UInt32 - - - 0 - - - BusType - - Filters disks by one or more specific bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - String[] - - String[] - - - None - - - BusTypeNot - - Excludes disks with specified bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - String[] - - String[] - - - None - - - MediaType + + MediaType Filters disks by one or more specific media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - - String[] - - String[] - - - None - - - MediaTypeNot - - Excludes disks with specified media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - - String[] - - String[] - - - None - - - PartitionStyle - - Filters disks by one or more specific partition styles. Valid values: 'GPT', 'MBR', 'RAW' - - String[] - - String[] - - - None - - - PartitionStyleNot - - Excludes disks with specified partition styles. Valid values: 'GPT', 'MBR', 'RAW' - - String[] - - String[] - - - None - - - BootFromDisk - - Filters disks where the system boots from the disk. - - - SwitchParameter - - - False - - - IsBoot - - Filters disks that contain boot partitions. - - - SwitchParameter - - - False - - - IsReadOnly - - Filters disks based on read-only status. - - - SwitchParameter - - - False - - - IsSystem - - Filters disks that contain system partitions. - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Number - - Specifies the disk number to retrieve. Can also be referenced using aliases 'Disk' or 'DiskNumber'. - - UInt32 - - UInt32 - - - 0 - - - BootFromDisk - - Filters disks where the system boots from the disk. - - SwitchParameter - - SwitchParameter - - - False - - - IsBoot - - Filters disks that contain boot partitions. - - SwitchParameter - - SwitchParameter - - - False - - - IsReadOnly - - Filters disks based on read-only status. - - SwitchParameter - - SwitchParameter - - - False - - - IsSystem - - Filters disks that contain system partitions. - - SwitchParameter - - SwitchParameter - - - False - - - BusType - - Filters disks by one or more specific bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - String[] - - String[] - - - None - - - BusTypeNot - - Excludes disks with specified bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - String[] - - String[] - - - None - - - MediaType - - Filters disks by one or more specific media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - - String[] - - String[] - - - None - - - MediaTypeNot - - Excludes disks with specified media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - - String[] - - String[] - - - None - - - PartitionStyle - - Filters disks by one or more specific partition styles. Valid values: 'GPT', 'MBR', 'RAW' - - String[] - - String[] - - - None - - - PartitionStyleNot - - Excludes disks with specified partition styles. Valid values: 'GPT', 'MBR', 'RAW' - - String[] - - String[] - - - None - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - Requires .NET System.Management access to the MSFT_Disk class and the Storage module Get-PhysicalDisk cmdlet. Automatically excludes: File Backed Virtual, MAX, Microsoft Reserved, USB, and Virtual bus types. The function throws an error if no disks match the specified criteria. A warning is issued when multiple disks match the criteria. - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDeploymentDisk - - Returns all available deployment-ready disks, excluding USB, virtual, and other incompatible bus types. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDeploymentDisk -Number 0 - - Returns disk 0 if it meets deployment criteria. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreDeploymentDisk -MediaType SSD - - Returns all SSD disks suitable for deployment. - - - - -------------------------- EXAMPLE 4 -------------------------- - Get-OSDCoreDeploymentDisk -BusType NVMe,SATA -PartitionStyle GPT - - Returns all NVMe or SATA disks with GPT partition style. - - - - -------------------------- EXAMPLE 5 -------------------------- - Get-OSDCoreDeploymentDisk -BusTypeNot USB -MediaTypeNot HDD - - Returns all non-USB, non-HDD disks (typically SSDs and NVMe drives). - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPackCatalogDell - Get - OSDCoreDriverPackCatalogDell - - Downloads and parses the Dell driver pack catalog for Windows 11. - - - - Retrieves the latest Dell DriverPackCatalog.cab from Dell's download site, extracts and parses it to create a catalog of available Windows 11 driver packs. If online retrieval fails, the function falls back to the bundled local catalog. - - - - Get-OSDCoreDriverPackCatalogDell - - LocalDriverPackCatalog - - Path to the local fallback Dell catalog XML file. This file is used when the online catalog cannot be downloaded or extracted. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\dell.xml') - - - OemDriverPackCatalog - - URL to the online Dell DriverPack catalog CAB file. - - String - - String - - - Https://downloads.dell.com/catalog/DriverPackCatalog.cab - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download/extraction. - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - LocalDriverPackCatalog - - Path to the local fallback Dell catalog XML file. This file is used when the online catalog cannot be downloaded or extracted. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\dell.xml') - - - OemDriverPackCatalog - - URL to the online Dell DriverPack catalog CAB file. - - String - - String - - - Https://downloads.dell.com/catalog/DriverPackCatalog.cab - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - SwitchParameter - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download/extraction. - - SwitchParameter - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - PSCustomObject[] - - - - - - - - Returns custom objects with driver pack information including Name, Model, - - - - - - - - SystemId, URL, ReleaseDate, and other metadata. - - - - - - - - - Catalog is downloaded from https://downloads.dell.com/catalog/DriverPackCatalog.cab - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDriverPackCatalogDell - - Retrieves the Dell driver pack catalog for Windows 11. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDriverPackCatalogDell -Force - - Forces a fresh online download of the Dell catalog before parsing. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreDriverPackCatalogDell -LocalDriverPackCatalog 'C:\Catalogs\dell.xml' - - Uses a custom local fallback catalog path. - - - - -------------------------- EXAMPLE 4 -------------------------- - Get-OSDCoreDriverPackCatalogDell -LocalOnly - - Processes only local catalog values without any online download checks. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPackCatalogHP - Get - OSDCoreDriverPackCatalogHP - - Downloads and parses the HP driver pack catalog for Windows 11. - - - - Retrieves the latest HP Client Driver Pack Catalog from HP's cloud repository, extracts and parses it to create a catalog of available Windows 11 driver packs. Falls back to offline catalog if download fails. - - - - Get-OSDCoreDriverPackCatalogHP - - LocalDriverPackCatalog - - Path to the local fallback HP catalog XML file. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\hp.xml') - - - OemDriverPackCatalog - - URL to the online HP driver pack catalog CAB file. - - String - - String - - - Https://hpia.hpcloud.hp.com/downloads/driverpackcatalog/HPClientDriverPackCatalog.cab - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download/extraction. - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - LocalDriverPackCatalog - - Path to the local fallback HP catalog XML file. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\hp.xml') - - - OemDriverPackCatalog - - URL to the online HP driver pack catalog CAB file. - - String - - String - - - Https://hpia.hpcloud.hp.com/downloads/driverpackcatalog/HPClientDriverPackCatalog.cab - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - SwitchParameter - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download/extraction. - - SwitchParameter - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - PSCustomObject[] - - - - - - - - Returns custom objects with driver pack information including Name, Model, - - - - - - - - SystemId, URL, ReleaseDate, and other metadata. - - - - - - - - - Catalog is downloaded from https://hpia.hpcloud.hp.com/downloads/driverpackcatalog/HPClientDriverPackCatalog.cab - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDriverPackCatalogHP - - Retrieves the HP driver pack catalog for Windows 11. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDriverPackCatalogHP -Force - - Forces a refresh of the HP driver pack catalog by downloading the latest version from HP's server, bypassing any cached copies. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreDriverPackCatalogHP -LocalOnly - - Processes only local catalog values without any online download checks. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPackCatalogLenovo - Get - OSDCoreDriverPackCatalogLenovo - - Downloads and parses the Lenovo driver pack catalog for Windows 11. - - - - Retrieves the latest Lenovo SCCM driver pack catalog from Lenovo's download site, parses the XML to create a catalog of available Windows 11 driver packs. Falls back to offline catalog if download fails. - - - - Get-OSDCoreDriverPackCatalogLenovo - - LocalDriverPackCatalog - - Path to the local fallback Lenovo catalog XML file. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\lenovo.xml') - - - OemDriverPackCatalog - - URL to the online Lenovo driver pack catalog XML file. - - String - - String - - - Https://download.lenovo.com/cdrt/td/catalogv2.xml - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download. - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - LocalDriverPackCatalog - - Path to the local fallback Lenovo catalog XML file. - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\lenovo.xml') - - - OemDriverPackCatalog - - URL to the online Lenovo driver pack catalog XML file. - - String - - String - - - Https://download.lenovo.com/cdrt/td/catalogv2.xml - - - Force - - Forces download and rebuild of the temporary online catalog even when a cached temp catalog file already exists. - - SwitchParameter - - SwitchParameter - - - False - - - LocalOnly - - Uses only local catalog values and skips online catalog download. - - SwitchParameter - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - PSCustomObject[] - - - - - - - - Returns custom objects with driver pack information including Name, Model, - - - - - - - - SystemId, URL, ReleaseDate, and other metadata. - - - - - - - - - Catalog is downloaded from https://download.lenovo.com/cdrt/td/catalogv2.xml - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDriverPackCatalogLenovo - - Retrieves the Lenovo driver pack catalog for Windows 11. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDriverPackCatalogLenovo -Force - - Forces a fresh online download of the Lenovo catalog before parsing. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreDriverPackCatalogLenovo -LocalOnly - - Processes only local catalog values without any online download checks. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPackCatalogPanasonic - Get - OSDCoreDriverPackCatalogPanasonic - - {{ Fill in the Synopsis }} - - - - {{ Fill in the Description }} - - - - Get-OSDCoreDriverPackCatalogPanasonic - - LocalDriverPackCatalog - - {{ Fill LocalDriverPackCatalog Description }} - - String - - String - - - None - - - OemDriverPackCatalog - - {{ Fill OemDriverPackCatalog Description }} - - String - - String - - - None - - - Force - - {{ Fill Force Description }} - - - SwitchParameter - - - False - - - LocalOnly - - {{ Fill LocalOnly Description }} - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Force - - {{ Fill Force Description }} - - SwitchParameter - - SwitchParameter - - - False - - - LocalDriverPackCatalog - - {{ Fill LocalDriverPackCatalog Description }} - - String - - String - - - None - - - LocalOnly - - {{ Fill LocalOnly Description }} - - SwitchParameter - - SwitchParameter - - - False - - - OemDriverPackCatalog - - {{ Fill OemDriverPackCatalog Description }} - - String - - String - - - None - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - None - - - - - - - - - - System.Object - - - - - - - - - - - - - - -------------------------- Example 1 -------------------------- - PS C:\> {{ Add example code here }} - - {{ Add example description here }} - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPackCatalogSurface - Get - OSDCoreDriverPackCatalogSurface - - Retrieves the Microsoft Surface driver pack catalog, enriching entries from live download pages. - - - - Loads the bundled surface.json catalog as the offline base. For entries that include an UpdatePage URL, the function scrapes the corresponding Microsoft download page to find the newest available MSI and updates FileName, Url, and ReleaseDate accordingly. Results are cached in $env:TEMP so subsequent calls within the same session skip network requests. Falls back to base JSON values when a page cannot be reached. - - - - Get-OSDCoreDriverPackCatalogSurface - - LocalDriverPackCatalog + + String[] + + String[] + + + None + + + MediaTypeNot - Path to the local fallback Surface catalog JSON file. + Excludes disks with specified media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - String + String[] - String + String[] + + + None + + + PartitionStyle + + Filters disks by one or more specific partition styles. Valid values: 'GPT', 'MBR', 'RAW' + + String[] + + String[] + + + None + + + PartitionStyleNot + + Excludes disks with specified partition styles. Valid values: 'GPT', 'MBR', 'RAW' + + String[] + + String[] - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\surface.json') + None - Force + BootFromDisk + + Filters disks where the system boots from the disk. + + + SwitchParameter + + + False + + + IsBoot + + Filters disks that contain boot partitions. + + + SwitchParameter + + + False + + + IsReadOnly - Forces bypass of the temp cache and rebuilds the enriched catalog from the local Surface catalog. + Filters disks based on read-only status. SwitchParameter @@ -18085,9 +16539,9 @@ Runs Get-OSDCloudWorkspace with common parameters. False - LocalOnly + IsSystem - Uses only local catalog values and skips connectivity probing and all live UpdatePage checks. + Filters disks that contain system partitions. SwitchParameter @@ -18110,22 +16564,22 @@ Runs Get-OSDCloudWorkspace with common parameters. - - LocalDriverPackCatalog + + Number - Path to the local fallback Surface catalog JSON file. + Specifies the disk number to retrieve. Can also be referenced using aliases 'Disk' or 'DiskNumber'. - String + UInt32 - String + UInt32 - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\surface.json') + 0 - Force + BootFromDisk - Forces bypass of the temp cache and rebuilds the enriched catalog from the local Surface catalog. + Filters disks where the system boots from the disk. SwitchParameter @@ -18135,9 +16589,9 @@ Runs Get-OSDCloudWorkspace with common parameters. False - LocalOnly + IsBoot - Uses only local catalog values and skips connectivity probing and all live UpdatePage checks. + Filters disks that contain boot partitions. SwitchParameter @@ -18146,189 +16600,101 @@ Runs Get-OSDCloudWorkspace with common parameters. False - - ProgressAction + + IsReadOnly - {{ Fill ProgressAction Description }} + Filters disks based on read-only status. - ActionPreference + SwitchParameter - ActionPreference + SwitchParameter - None + False - - - - + + IsSystem + + Filters disks that contain system partitions. + + SwitchParameter - PSCustomObject[] + SwitchParameter + + False + + + BusType - + Filters disks by one or more specific bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - + String[] - Objects with CatalogVersion, ReleaseDate, Name, Manufacturer, Model, SystemId, FileName, + String[] + + None + + + BusTypeNot - + Excludes disks with specified bus types. Valid values: '1394', 'ATA', 'ATAPI', 'Fibre Channel', 'File Backed Virtual', 'iSCSI', 'MMC', 'MAX', 'Microsoft Reserved', 'NVMe', 'RAID', 'SAS', 'SATA', 'SCSI', 'SD', 'SSA', 'Storage Spaces', 'USB', 'Virtual' - - + String[] - Url, OperatingSystem, OSArchitecture, and HashMD5 properties. + String[] + + None + + + MediaType - + Filters disks by one or more specific media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - - - - - Base catalog: core/driverpacks/surface.json (bundled with the module) Temp cache: $env:TEMP\osdcloud-driverpack-surface.json - - - - - -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDriverPackCatalogSurface - - Returns all Surface driver pack entries, with live URLs where available. - - - - -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDriverPackCatalogSurface -Verbose - - Returns all Surface driver pack entries with verbose progress output. - - - - -------------------------- EXAMPLE 3 -------------------------- - Get-OSDCoreDriverPackCatalogSurface -Force - - Bypasses the temp cache and rebuilds the enriched catalog. - - - - -------------------------- EXAMPLE 4 -------------------------- - Get-OSDCoreDriverPackCatalogSurface -LocalOnly - - Processes only local catalog values without any live network checks. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Get-OSDCoreDriverPacks - Get - OSDCoreDriverPacks - - Retrieves driver pack information for the specified manufacturer and operating system architecture. - - - - Gets driver pack catalogs based on the device manufacturer and OS architecture. For AMD64 architecture, manufacturer-specific catalogs are loaded. For ARM64 and other architectures, the default catalog is returned. Supports Dell, HP, Lenovo, Microsoft (Surface), and generic devices. - - - - Get-OSDCoreDriverPacks - - GenericDriverPackJson - - {{ Fill GenericDriverPackJson Description }} - - String - - String - - - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\generic.json') - - - OSDManufacturer - - The device manufacturer name. Defaults to the value from $global:OSDCoreDevice.OSDManufacturer. Supported values: Dell, HP, Lenovo, Microsoft, or any other value will use the Default catalog. - - String - - String - - - $global:OSDCoreDevice.OSDManufacturer - - - ProcessorArchitecture - - The operating system architecture. Defaults to the value from $global:OSDCoreDevice.ProcessorArchitecture. Typically 'amd64' or 'arm64'. - - String - - String - - - $env:PROCESSOR_ARCHITECTURE - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - GenericDriverPackJson + String[] + + String[] + + + None + + + MediaTypeNot - {{ Fill GenericDriverPackJson Description }} + Excludes disks with specified media types. Valid values: 'SSD', 'HDD', 'SCM', 'Unspecified' - String + String[] - String + String[] - (Join-Path $($MyInvocation.MyCommand.Module.ModuleBase) 'core\driverpacks\generic.json') + None - - OSDManufacturer + + PartitionStyle - The device manufacturer name. Defaults to the value from $global:OSDCoreDevice.OSDManufacturer. Supported values: Dell, HP, Lenovo, Microsoft, or any other value will use the Default catalog. + Filters disks by one or more specific partition styles. Valid values: 'GPT', 'MBR', 'RAW' - String + String[] - String + String[] - $global:OSDCoreDevice.OSDManufacturer + None - - ProcessorArchitecture + + PartitionStyleNot - The operating system architecture. Defaults to the value from $global:OSDCoreDevice.ProcessorArchitecture. Typically 'amd64' or 'arm64'. + Excludes disks with specified partition styles. Valid values: 'GPT', 'MBR', 'RAW' - String + String[] - String + String[] - $env:PROCESSOR_ARCHITECTURE + None ProgressAction @@ -18344,44 +16710,46 @@ Runs Get-OSDCloudWorkspace with common parameters. - - - - PSCustomObject - - - - - - - - Array of driver pack objects containing driver information for the specified manufacturer and architecture. - - - - - - + - Requires manufacturer-specific cmdlets (Get-OSDCoreDriverPackCatalogDell, Get-OSDCoreDriverPackCatalogHP, etc.) to be available. + Requires .NET System.Management access to the MSFT_Disk class and the Storage module Get-PhysicalDisk cmdlet. Automatically excludes: File Backed Virtual, MAX, Microsoft Reserved, USB, and Virtual bus types. The function throws an error if no disks match the specified criteria. A warning is issued when multiple disks match the criteria. -------------------------- EXAMPLE 1 -------------------------- - Get-OSDCoreDriverPacks -Returns driver packs for the current device's manufacturer and architecture. + Get-OSDCoreDeploymentDisk - + Returns all available deployment-ready disks, excluding USB, virtual, and other incompatible bus types. -------------------------- EXAMPLE 2 -------------------------- - Get-OSDCoreDriverPacks -OSDManufacturer 'Dell' -ProcessorArchitecture 'amd64' -Returns driver packs for Dell devices with AMD64 architecture. + Get-OSDCoreDeploymentDisk -Number 0 - + Returns disk 0 if it meets deployment criteria. + + + + -------------------------- EXAMPLE 3 -------------------------- + Get-OSDCoreDeploymentDisk -MediaType SSD + + Returns all SSD disks suitable for deployment. + + + + -------------------------- EXAMPLE 4 -------------------------- + Get-OSDCoreDeploymentDisk -BusType NVMe,SATA -PartitionStyle GPT + + Returns all NVMe or SATA disks with GPT partition style. + + + + -------------------------- EXAMPLE 5 -------------------------- + Get-OSDCoreDeploymentDisk -BusTypeNot USB -MediaTypeNot HDD + + Returns all non-USB, non-HDD disks (typically SSDs and NVMe drives). @@ -18546,11 +16914,11 @@ Prefers a license with the specified email when available. Get OSDCoreOperatingSystems - Gets the core operating system catalog entries that OSD uses for offline media selection. + Gets parsed OSD core operating system catalog entries. - Imports the operating system catalog XML files stored under the module's core operating systems cache, normalizes duplicate metadata, and returns a sorted list of operating system records with build, architecture, language, activation, hash, and image metadata. + Imports normalized raw catalog records from Get-ModuleCoreOperatingSystems and transforms them into OSD core operating system objects used by selection and deployment workflows. The function derives build identity, Windows family and release, normalized architecture, activation channel, and compatibility flags, then returns unique sorted records. @@ -18586,7 +16954,15 @@ Prefers a license with the specified email when available. - None. You cannot pipe input to this function. + None + + + + + + + + You cannot pipe input to this function. @@ -18596,7 +16972,7 @@ Prefers a license with the specified email when available. - PSCustomObject + PSCustomObject[] @@ -18604,7 +16980,7 @@ Prefers a license with the specified email when available. - One or more normalized operating system records. + Parsed operating system records with OSD-specific properties. @@ -18613,7 +16989,7 @@ Prefers a license with the specified email when available. - Author: David Segura - Recast Software 2026-07-22 - Initial help block created + Author: David Segura - Recast Software 2026-07-22 - Initial help block created 2026-08-05 - Expanded help content and examples @@ -18621,7 +16997,7 @@ Prefers a license with the specified email when available. -------------------------- EXAMPLE 1 -------------------------- Get-OSDCoreOperatingSystems - Returns all available core operating system records discovered in the module cache. + Returns all available parsed core operating system records. @@ -18631,6 +17007,13 @@ Prefers a license with the specified email when available. Returns only Windows 11 operating system records. + + -------------------------- EXAMPLE 3 -------------------------- + Get-OSDCoreOperatingSystems | Where-Object { $_.Architecture -eq 'arm64' } + + Returns only arm64 operating system records. + + @@ -23301,84 +21684,6 @@ Initializes the OSDCloud startnet environment and attempts to connect to a wirel - - - Initialize-OSDCoreDevice - Initialize - OSDCoreDevice - - Collects local hardware, firmware, TPM, and network details for OSDCloud. - - - - Initialize-OSDCoreDevice gathers device information from CIM classes, firmware, and environment data, then normalizes manufacturer/model/product values for workflow use. It writes diagnostic logs to $env:TEMP\osdcloud-logs, attempts to copy logs to an available OSDCloudLogs path, and populates $global:OSDCoreDevice with an ordered property set used by downstream OSDCloud deployment logic. - - - - Initialize-OSDCoreDevice - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - None. This function does not emit pipeline output. - - - - - - - - - Side effects: - Clears the current PowerShell error collection. - - Updates date/time in WinPE when needed. - - Writes logs to $env:TEMP\osdcloud-logs. - - Sets $global:OSDCoreDevice. - - - - - -------------------------- EXAMPLE 1 -------------------------- - Initialize-OSDCoreDevice - - Collects current device metadata, creates or updates $global:OSDCoreDevice, and writes log artifacts for troubleshooting. - - - - - - Online Version: - https://github.com/OSDeploy/OSD/tree/master/docs - - - Install-AzOSDIacTools @@ -42061,153 +40366,21 @@ Returns $true only if both SP87753.exe and SP94937.exe exist on the OSDCloud USB ActionPreference - None - - - - - - - Author: David Segura - Recast Software 2026-07-13 - Initial help block created 2026-07-13 - Refined generated help text - - - - - -------------------------- EXAMPLE 1 -------------------------- - Test-IsVM -Demonstrates a common way to run Test-IsVM. - - - - - - - - https://github.com/OSDeploy/OSD/tree/master/docs - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Test-MicrosoftUpdateCatalog - Test - MicrosoftUpdateCatalog - - Tests connectivity to Microsoft Update Catalog. - - - - Sends an HTTP request to Microsoft Update Catalog and returns True when the endpoint is reachable with a successful or redirect status code. Uses a HEAD request first, then falls back to GET if needed. - - - - Test-MicrosoftUpdateCatalog - - Uri - - The Microsoft Update Catalog endpoint to test. - - String - - String - - - Https://www.catalog.update.microsoft.com - - - TimeoutSec - - Timeout in seconds for each HTTP request attempt. - - Int32 - - Int32 - - - 15 - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Uri - - The Microsoft Update Catalog endpoint to test. - - String - - String - - - Https://www.catalog.update.microsoft.com - - - TimeoutSec - - Timeout in seconds for each HTTP request attempt. - - Int32 - - Int32 - - - 15 - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - System.Boolean - - - - - - + None + + + + - Author: David Segura - Recast Software 2026-07-11 - Improved request resilience and added comment-based help + Author: David Segura - Recast Software 2026-07-13 - Initial help block created 2026-07-13 - Refined generated help text -------------------------- EXAMPLE 1 -------------------------- - Test-MicrosoftUpdateCatalog -Returns True when the default Microsoft Update Catalog endpoint is reachable. - - - - - - -------------------------- EXAMPLE 2 -------------------------- - Test-MicrosoftUpdateCatalog -TimeoutSec 5 -Tests connectivity with a shorter timeout. + Test-IsVM +Demonstrates a common way to run Test-IsVM. @@ -42222,44 +40395,42 @@ Tests connectivity with a shorter timeout. - Test-OSDCoreCacheUSB + Test-MicrosoftUpdateCatalog Test - OSDCoreCacheUSB + MicrosoftUpdateCatalog - Tests whether any OSDCloud cache drive is a USB drive. + Tests connectivity to Microsoft Update Catalog. - Uses Get-OSDCoreCacheDrive to enumerate OSDCloud cache drives and returns true when at least one discovered cache drive has USB set to true. + Sends an HTTP request to Microsoft Update Catalog and returns True when the endpoint is reachable with a successful or redirect status code. Uses a HEAD request first, then falls back to GET if needed. - Test-OSDCoreCacheUSB + Test-MicrosoftUpdateCatalog - Include + Uri - Optional list of drive letters to include when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. + The Microsoft Update Catalog endpoint to test. - String[] + String - String[] + String - None + Https://www.catalog.update.microsoft.com - Exclude + TimeoutSec - Optional list of drive letters to exclude when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. + Timeout in seconds for each HTTP request attempt. - String[] + Int32 - String[] + Int32 - None + 15 ProgressAction @@ -42277,30 +40448,28 @@ Tests connectivity with a shorter timeout. - Include + Uri - Optional list of drive letters to include when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - When omitted, all mounted file system drive letters are considered. + The Microsoft Update Catalog endpoint to test. - String[] + String - String[] + String - None + Https://www.catalog.update.microsoft.com - Exclude + TimeoutSec - Optional list of drive letters to exclude when searching for OSDCloud cache drives. Accepts values such as 'C', 'D:', or 'E:\'. - Excluded drives are skipped even when they are also present in Include. + Timeout in seconds for each HTTP request attempt. - String[] + Int32 - String[] + Int32 - None + 15 ProgressAction @@ -42319,7 +40488,7 @@ Tests connectivity with a shorter timeout. - System.Boolean. True when an OSDCloud cache drive is on USB; otherwise false. + System.Boolean @@ -42328,22 +40497,24 @@ Tests connectivity with a shorter timeout. - Author: David Segura - Recast Software 2026-07-18 - Initial function created + Author: David Segura - Recast Software 2026-07-11 - Improved request resilience and added comment-based help -------------------------- EXAMPLE 1 -------------------------- - Test-OSDCoreCacheUSB + Test-MicrosoftUpdateCatalog +Returns True when the default Microsoft Update Catalog endpoint is reachable. - Returns true if any discovered OSDCloud cache drive is a USB drive. + -------------------------- EXAMPLE 2 -------------------------- - Test-OSDCoreCacheUSB -Include D + Test-MicrosoftUpdateCatalog -TimeoutSec 5 +Tests connectivity with a shorter timeout. - Returns true if drive D contains an OSDCloud cache path and is a USB drive. + @@ -43724,196 +41895,12 @@ installer completes. String - Check - - - BitsTransfer - - Specifies the BitsTransfer to use when running Update-MyWindowsImage. - - - SwitchParameter - - - False - - - Force - - Specifies the Force to use when running Update-MyWindowsImage. - - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - Path - - Specifies the Path to use when running Update-MyWindowsImage. - - String[] - - String[] - - - None - - - Update - - Specifies the Update to use when running Update-MyWindowsImage. - - String - - String - - - Check - - - BitsTransfer - - Specifies the BitsTransfer to use when running Update-MyWindowsImage. - - SwitchParameter - - SwitchParameter - - - False - - - Force - - Specifies the Force to use when running Update-MyWindowsImage. - - SwitchParameter - - SwitchParameter - - - False - - - ProgressAction - - {{ Fill ProgressAction Description }} - - ActionPreference - - ActionPreference - - - None - - - - - - - Author: David Segura - Recast Software 2026-07-13 - Initial help block created 2026-07-13 - Refined generated help text - - - - - -------------------------- EXAMPLE 1 -------------------------- - Demonstrates a common way to run Update-MyWindowsImage. - - - - - - - - https://github.com/OSDeploy/OSD/tree/master/docs - https://github.com/OSDeploy/OSD/tree/master/docs - - - - - - Update-OSDCloudUSB - Update - OSDCloudUSB - - Updates resources by using Update-OSDCloudUSB. - - - - Provides the implementation for Update-OSDCloudUSB. - - - - Update-OSDCloudUSB - - DriverPack - - Specifies the value for DriverPack. - - String[] - - String[] - - - None - - - OSLanguage - - Specifies the value for OSLanguage. - - String - - String - - - None - - - OSActivation - - Specifies the value for OSActivation. - - String - - String - - - None - - - OSName - - Specifies the value for OSName. - - String - - String - - - None + Check - PSUpdate + BitsTransfer - Indicates whether to enable PSUpdate. + Specifies the BitsTransfer to use when running Update-MyWindowsImage. SwitchParameter @@ -43922,9 +41909,9 @@ installer completes. False - OS + Force - Indicates whether to enable OS. + Specifies the Force to use when running Update-MyWindowsImage. SwitchParameter @@ -43947,10 +41934,10 @@ installer completes. - - DriverPack + + Path - Specifies the value for DriverPack. + Specifies the Path to use when running Update-MyWindowsImage. String[] @@ -43959,22 +41946,22 @@ installer completes. None - - PSUpdate + + Update - Indicates whether to enable PSUpdate. + Specifies the Update to use when running Update-MyWindowsImage. - SwitchParameter + String - SwitchParameter + String - False + Check - OS + BitsTransfer - Indicates whether to enable OS. + Specifies the BitsTransfer to use when running Update-MyWindowsImage. SwitchParameter @@ -43983,41 +41970,17 @@ installer completes. False - - OSLanguage - - Specifies the value for OSLanguage. - - String - - String - - - None - - - OSActivation - - Specifies the value for OSActivation. - - String - - String - - - None - - - OSName + + Force - Specifies the value for OSName. + Specifies the Force to use when running Update-MyWindowsImage. - String + SwitchParameter - String + SwitchParameter - None + False ProgressAction @@ -44036,14 +41999,13 @@ installer completes. - Author: David Segura - Recast Software 2026-07-09 - Updated comment-based help + Author: David Segura - Recast Software 2026-07-13 - Initial help block created 2026-07-13 - Refined generated help text -------------------------- EXAMPLE 1 -------------------------- - -PSUpdate -Runs Update-OSDCloudUSB with common parameters. + Demonstrates a common way to run Update-MyWindowsImage. @@ -44058,47 +42020,35 @@ Runs Update-OSDCloudUSB with common parameters. - Update-RecastOSDCloudUSBCache + Update-OSDCloudUSB Update - RecastOSDCloudUSBCache + OSDCloudUSB - Starts the Recast OSDCloud command-line deployment workflow. + Updates resources by using Update-OSDCloudUSB. - Initializes device and deployment context, discovers matching operating systems, resolves driver pack metadata for the current device (or supplied overrides), validates required dependencies, and prepares global state consumed by the Recast OSDCloud CLI workflow. + Provides the implementation for Update-OSDCloudUSB. - Update-RecastOSDCloudUSBCache + Update-OSDCloudUSB - OSArchitecture + DriverPack - Operating system architecture used when selecting catalog entries. Supported values are amd64 and arm64. + Specifies the value for DriverPack. - String + String[] - String + String[] - $env:PROCESSOR_ARCHITECTURE + None - OSReleaseID - - Operating system release identifier used for catalog selection. - - String - - String - - - 25H2 - - - OSLanguageCode + OSLanguage - Operating system language code used for catalog selection. If not specified, the value is inferred from the current keyboard layout. + Specifies the value for OSLanguage. String @@ -44107,34 +42057,10 @@ Runs Update-OSDCloudUSB with common parameters. None - + OSActivation - Operating system activation channel used for catalog selection. - - String - - String - - - Retail - - - OSEdition - - Operating system edition used for catalog selection. Valid values depend on OSArchitecture at runtime. - - String - - String - - - Pro - - - OSDManufacturer - - Overrides the detected computer manufacturer for driver pack matching. If omitted, the detected device manufacturer is used. + Specifies the value for OSActivation. String @@ -44143,10 +42069,10 @@ Runs Update-OSDCloudUSB with common parameters. None - - OSDModel + + OSName - Overrides the detected computer model for logging and context alignment. If omitted, the detected device model is used. + Specifies the value for OSName. String @@ -44155,29 +42081,27 @@ Runs Update-OSDCloudUSB with common parameters. None - - OSDProduct + + PSUpdate - Overrides the detected computer product/system ID for driver pack matching. If omitted, the detected device product value is used. + Indicates whether to enable PSUpdate. - String - String + SwitchParameter - None + False - - WinPEPostAction + + OS - Specifies the action to take after the WinPE deployment workflow completes. + Indicates whether to enable OS. - String - String + SwitchParameter - Quit + False ProgressAction @@ -44195,69 +42119,45 @@ Runs Update-OSDCloudUSB with common parameters. - OSArchitecture - - Operating system architecture used when selecting catalog entries. Supported values are amd64 and arm64. - - String - - String - - - $env:PROCESSOR_ARCHITECTURE - - - OSReleaseID - - Operating system release identifier used for catalog selection. - - String - - String - - - 25H2 - - - OSLanguageCode + DriverPack - Operating system language code used for catalog selection. If not specified, the value is inferred from the current keyboard layout. + Specifies the value for DriverPack. - String + String[] - String + String[] None - - OSActivation + + PSUpdate - Operating system activation channel used for catalog selection. + Indicates whether to enable PSUpdate. - String + SwitchParameter - String + SwitchParameter - Retail + False - - OSEdition + + OS - Operating system edition used for catalog selection. Valid values depend on OSArchitecture at runtime. + Indicates whether to enable OS. - String + SwitchParameter - String + SwitchParameter - Pro + False - - OSDManufacturer + + OSLanguage - Overrides the detected computer manufacturer for driver pack matching. If omitted, the detected device manufacturer is used. + Specifies the value for OSLanguage. String @@ -44266,10 +42166,10 @@ Runs Update-OSDCloudUSB with common parameters. None - - OSDModel + + OSActivation - Overrides the detected computer model for logging and context alignment. If omitted, the detected device model is used. + Specifies the value for OSActivation. String @@ -44278,10 +42178,10 @@ Runs Update-OSDCloudUSB with common parameters. None - - OSDProduct + + OSName - Overrides the detected computer product/system ID for driver pack matching. If omitted, the detected device product value is used. + Specifies the value for OSName. String @@ -44290,18 +42190,6 @@ Runs Update-OSDCloudUSB with common parameters. None - - WinPEPostAction - - Specifies the action to take after the WinPE deployment workflow completes. - - String - - String - - - Quit - ProgressAction @@ -44319,22 +42207,14 @@ Runs Update-OSDCloudUSB with common parameters. - Author: David Segura - Recast Software 2026-07-09 - Standardized comment-based help metadata and links. 2026-07-14 - Updated help content for CLI-specific behavior and parameter documentation. + Author: David Segura - Recast Software 2026-07-09 - Updated comment-based help -------------------------- EXAMPLE 1 -------------------------- - Update-RecastOSDCloudUSBCache -Updates the Recast OSDCloud USB cache using detected device values and default deployment selection. - - - - - - -------------------------- EXAMPLE 2 -------------------------- - Update-RecastOSDCloudUSBCache -OSArchitecture arm64 -OSEdition Pro -OSReleaseID 24H2 -Updates the Recast OSDCloud USB cache for an ARM64 Windows 11 Pro 24H2 deployment selection. + -PSUpdate +Runs Update-OSDCloudUSB with common parameters.