Public/Show-OSBMediaInfo.ps1
<# .SYNOPSIS Shows Operating System information of any OSBuilder Media .DESCRIPTION Shows Operating System information of any OSBuilder Media (OSMedia, OSBuilds, PEBuilds) .LINK https://www.osdeploy.com/osbuilder/docs/functions/media/show-osbmediainfo .PARAMETER FullName Full Path of the OSBuilder Media #> function Show-OSBMediaInfo { [CmdletBinding()] PARAM ( [Parameter(ValueFromPipelineByPropertyName)] [string[]]$FullName ) BEGIN { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) BEGIN" -ForegroundColor Green #=================================================================================================== Write-Verbose '19.1.1 Initialize OSBuilder' #=================================================================================================== Get-OSBuilder -CreatePaths -HideDetails #=================================================================================================== Write-Verbose '19.1.1 Gather All OS Media' #=================================================================================================== $AllOSMedia = @() $AllOSMedia = $(Get-OSMedia) $AllOSBuild = @() $AllOSBuild = $(Get-OSBuild) $AllPEBuild = @() $AllPEBuild = $(Get-PEBuild) $AllOSBMedia = @() $AllOSBMedia = $AllOSMedia + $AllOSBuild + $AllPEBuild #$AllOSBMedia = $(Get-OSMedia) + $(Get-OSBuild) + $(Get-PEBuild) } PROCESS { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) PROCESS" -ForegroundColor Green #=================================================================================================== Write-Verbose '19.1.1 Select Source OSMedia' #=================================================================================================== $SelectedOSMedia = @() if ($FullName) { foreach ($Item in $FullName) { Write-Verbose "Checking $Item" $SelectedOSMedia += $AllOSBMedia | Where-Object {$_.FullName -eq $Item} } } else { $SelectedOSMedia = $AllOSBMedia | Out-GridView -Title "OSBuilder: Select one or more Media and press OK (Cancel to Exit)" -PassThru } #=================================================================================================== Write-Verbose '19.1.1 Process OSMedia' #=================================================================================================== foreach ($Media in $SelectedOSMedia) { Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Show-OSBMediaInfo -FullName '$($Media.FullName)'" -ForegroundColor Green if (!(Test-Path $(Join-Path $Media.FullName (Join-Path "info" (Join-Path "json" "Get-WindowsImage.json"))))) { Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Warning "Could not find an OSBuilder Operating System at $Media.FullName" } else { if (!($($Media.FullName) -like "*PEBuilds*")) { #=================================================================================================== Write-Verbose '19.1.1 Enabled Appx Provisioned Packages' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Enabled Appx Provisioned Packages" -ForegroundColor Green $GetAppxProvisionedPackageJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-AppxProvisionedPackage.json")) if ($Media.Name -like "*server*") {Write-Warning "Appx Provisioned Packages are not present in Windows Server"} if (Test-Path $GetAppxProvisionedPackageJson) { $GetAppxProvisionedPackage = Get-Content -Raw -Path $GetAppxProvisionedPackageJson | ConvertFrom-Json foreach ($Item in $GetAppxProvisionedPackage) {Write-Host "$($Item.DisplayName)"} } } #=================================================================================================== Write-Verbose '19.1.1 Windows Packages' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Packages" -ForegroundColor Green $GetWindowsPackageJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsPackage.json")) if (Test-Path $GetWindowsPackageJson) { $GetWindowsPackage = Get-Content -Raw -Path $GetWindowsPackageJson | ConvertFrom-Json $GetWindowsPackage = $GetWindowsPackage | Where-Object {$_.PackageName -notlike "*Package_for*"} $GetWindowsPackage = $GetWindowsPackage | Where-Object {$_.PackageName -notlike "*LanguageFeatures-Basic*"} foreach ($Item in $GetWindowsPackage) {Write-Host "$($Item.PackageName)"} } if (!($($Media.FullName) -like "*PEBuilds*")) { #=================================================================================================== Write-Verbose '19.1.1 Windows Packages (Language Features Basic)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Packages (Language Features Basic)" -ForegroundColor Green $GetWindowsPackageJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsPackage.json")) if (Test-Path $GetWindowsPackageJson) { $GetWindowsPackage = Get-Content -Raw -Path $GetWindowsPackageJson | ConvertFrom-Json $GetWindowsPackage = $GetWindowsPackage | Where-Object {$_.PackageName -like "*LanguageFeatures-Basic*"} foreach ($Item in $GetWindowsPackage) {Write-Host "$($Item.PackageName)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Capabilities' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Capabilities" -ForegroundColor Green $GetWindowsCapabilityJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsCapability.json")) if (Test-Path $GetWindowsCapabilityJson) { $GetWindowsCapability = Get-Content -Raw -Path $GetWindowsCapabilityJson | ConvertFrom-Json $GetWindowsCapability = $GetWindowsCapability | Where-Object {$_.Name -notlike "*Language.Basic*"} foreach ($Item in $GetWindowsCapability) {Write-Host "$($Item.Name)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Capabilities (Language.Basic)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Capabilities (Language.Basic)" -ForegroundColor Green $GetWindowsCapabilityJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsCapability.json")) if (Test-Path $GetWindowsCapabilityJson) { $GetWindowsCapability = Get-Content -Raw -Path $GetWindowsCapabilityJson | ConvertFrom-Json $GetWindowsCapability = $GetWindowsCapability | Where-Object {$_.Name -like "*Language.Basic*"} foreach ($Item in $GetWindowsCapability) {Write-Host "$($Item.Name)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Optional Features (Enabled)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Optional Features (Enabled)" -ForegroundColor Green $WindowsOptionalFeatureJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsOptionalFeature.json")) if (Test-Path $WindowsOptionalFeatureJson) { $WindowsOptionalFeature = Get-Content -Raw -Path $WindowsOptionalFeatureJson | ConvertFrom-Json $WindowsOptionalFeature = $WindowsOptionalFeature | Where-Object {$_.State -eq 2} foreach ($Item in $WindowsOptionalFeature) {Write-Host "$($Item.FeatureName)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Optional Features (EnablePending)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Optional Features (EnablePending)" -ForegroundColor Green $WindowsOptionalFeatureJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsOptionalFeature.json")) if (Test-Path $WindowsOptionalFeatureJson) { $WindowsOptionalFeature = Get-Content -Raw -Path $WindowsOptionalFeatureJson | ConvertFrom-Json $WindowsOptionalFeature = $WindowsOptionalFeature | Where-Object {$_.State -eq 3} foreach ($Item in $WindowsOptionalFeature) {Write-Host "$($Item.FeatureName)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Optional Features (Disabled)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Optional Features (Disabled)" -ForegroundColor Green $WindowsOptionalFeatureJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsOptionalFeature.json")) if (Test-Path $WindowsOptionalFeatureJson) { $WindowsOptionalFeature = Get-Content -Raw -Path $WindowsOptionalFeatureJson | ConvertFrom-Json $WindowsOptionalFeature = $WindowsOptionalFeature | Where-Object {$_.State -eq 0} foreach ($Item in $WindowsOptionalFeature) {Write-Host "$($Item.FeatureName)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Optional Features (Disabled with Payload Removed)' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Optional Features (Disabled with Payload Removed)" -ForegroundColor Green $WindowsOptionalFeatureJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsOptionalFeature.json")) if (Test-Path $WindowsOptionalFeatureJson) { $WindowsOptionalFeature = Get-Content -Raw -Path $WindowsOptionalFeatureJson | ConvertFrom-Json $WindowsOptionalFeature = $WindowsOptionalFeature | Where-Object {$_.State -eq 6} foreach ($Item in $WindowsOptionalFeature) {Write-Host "$($Item.FeatureName)"} } } #=================================================================================================== Write-Verbose '19.1.1 Windows Update Packages' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Update Packages" -ForegroundColor Green $GetWindowsPackageJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsPackage.json")) if (Test-Path $GetWindowsPackageJson) { $GetWindowsPackage = Get-Content -Raw -Path $GetWindowsPackageJson | ConvertFrom-Json $GetWindowsPackage = $GetWindowsPackage | Where-Object {$_.PackageName -like "*Package_for*"} foreach ($Item in $GetWindowsPackage) {Write-Host "$($Item.PackageName)"} } #=================================================================================================== Write-Verbose '19.1.1 Windows Image Information' #=================================================================================================== Write-Host '========================================================================================' -ForegroundColor DarkGray Write-Host "Windows Image Information" -ForegroundColor Green $GetWindowsImageJson = Join-Path $($Media.FullName) (Join-Path "info" (Join-Path "json" "Get-WindowsImage.json")) if (Test-Path $GetWindowsPackageJson) { $GetWindowsImage = Get-Content -Raw -Path $GetWindowsImageJson | ConvertFrom-Json if ($GetWindowsImage.Architecture -eq '0') {$GetWindowsImage.Architecture = 'x86'} if ($GetWindowsImage.Architecture -eq '6') {$GetWindowsImage.Architecture = 'ia64'} if ($GetWindowsImage.Architecture -eq '9') {$GetWindowsImage.Architecture = 'x64'} if ($GetWindowsImage.Architecture -eq '12') {$GetWindowsImage.Architecture = 'x64 ARM'} $GetWindowsImage | Format-List } } } } END { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) END" -ForegroundColor Green } } |