Public/Device/Label/Remove-PanDeviceLabel.ps1
function Remove-PanDeviceLabel { <# .SYNOPSIS Remove label(s) from a PanDevice in PanDeviceDb. .DESCRIPTION Remove label(s) from a PanDevice in PanDeviceDb. .NOTES .INPUTS PanDevice[] You can pipe a PanDevice to this cmdlet .OUTPUTS None .EXAMPLE #> [CmdletBinding(SupportsShouldProcess,ConfirmImpact='Low')] param( [parameter( Mandatory=$true, ValueFromPipeline=$true, HelpMessage='PanDevice(s) to which label operation will be applied')] [PanDevice[]] $Device, [parameter( Mandatory=$true, Position=0, ValueFromPipeline=$false, HelpMessage='Label')] [String[]] $Label ) Begin { # Propagate -Debug and -Verbose to this module function, https://tinyurl.com/y5dcbb34 if($PSBoundParameters.Debug) { $DebugPreference = 'Continue' } if($PSBoundParameters.Verbose) { $VerbosePreference = 'Continue' } # Announce Write-Debug ($MyInvocation.MyCommand.Name + ':') # Initialize PanDeviceDb Initialize-PanDeviceDb # If dirty after process block, serialize necessary $Dirty = $false } # Begin block Process { foreach($DeviceCur in $Device) { Write-Debug ($MyInvocation.MyCommand.Name + ': Device: ' + $DeviceCur.Name) if($DeviceCur.Label.Count -eq 0) { # No labels on this device. Nothing to do. continue } else { # Iterate through each Label parameter foreach($LabelCur in $Label) { # Iterate through each Label in the current Device foreach($DeviceCurLabelCur in $DeviceCur.Label) { # Case-insensitive match (we can't just use Contains()) if($LabelCur -imatch ('^' + $DeviceCurLabelCur + '$')) { if($PSCmdlet.ShouldProcess('PanDeviceDb','Remove ' + $DeviceCurLabelCur + ' label from ' + $DeviceCur.Name)) { $DeviceCur.Label.Remove($DeviceCurLabelCur) | Out-Null $Dirty = $true break } } } } } } # foreach $Devicecur } # Process block End { if($Dirty) { Export-PanDeviceDb } } # End block } # Function |