Private/Object/Address/New-PanAddress.ps1
function New-PanAddress { <# .SYNOPSIS Returns a PanAddress object. .DESCRIPTION Returns a PanAddress object. To apply PanAddress to NGFW, use Set-, Remove-, Clear- cmdlets. .NOTES .INPUTS None .OUTPUTS PanAddress .EXAMPLE #> [CmdletBinding()] param( [parameter( Mandatory=$true, Position=0, HelpMessage='Address object name')] [String] $Name, [parameter( Mandatory=$true, Position=1, HelpMessage='Address object value e.g. "10.1.1.1/32" , "server.acme.com"')] [String] $Value, [parameter( HelpMessage='IpNetmask, IpRange, IpWildcardMask, Fqdn')] [PanAddressType] $Type = [PanAddressType]::IpNetmask, [parameter( HelpMessage='Address object description')] [String] $Description = $null, [parameter( HelpMessage='PAN-OS tag(s) to be added to address object, tags must already exist')] [System.Collections.Generic.List[String]] $Tag = [System.Collections.Generic.List[String]]@(), [parameter( ParameterSetName='ParentDevice', HelpMessage='Optional ParentDevice')] [PanDevice] $Device, [parameter( ParameterSetName='ParentDevice', HelpMessage='Optional Location within ParentDevice')] [String] $Location ) # 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 + ':') if($PSCmdlet.ParameterSetName -eq 'ParentDevice') { Write-Debug $($MyInvocation.MyCommand.Name + ': ParentDevice specified') return [PanAddress]::new($Name, $Value, $Type, $Description, $Tag, $Device, $Location) } else { return [PanAddress]::new($Name, $Value, $Type, $Description, $Tag) } } # Function |