Public/Remove-OpmPackage.ps1
|
<#
.SYNOPSIS Remove a package from a PacKit application fragment by PackageId. .DESCRIPTION Removes the package whose PackageId matches (case-insensitively) from the fragment's Packages collection. The fragment is modified in place. .EXAMPLE Remove-OpmPackage -Fragment $app -PackageId '{1B2C3D4E-5F60-7182-93A4-B5C6D7E8F900}' #> function Remove-OpmPackage { [CmdletBinding()] param( [Parameter(Mandatory, ValueFromPipeline)] [psobject] $Fragment, [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $PackageId, [Parameter()] [switch] $PassThru ) process { $target = ConvertTo-OpmCanonicalGuid -Value $PackageId $before = @($Fragment.Packages).Count $Fragment.Packages = @($Fragment.Packages | Where-Object { $_.PackageId -ne $target }) $after = @($Fragment.Packages).Count if ($after -eq $before) { Write-Verbose "No package with PackageId '$PackageId' was found; nothing removed." } if ($PassThru) { return $Fragment } } } |