Public/Update-PFComponent.ps1
function Update-PFComponent { [cmdletbinding(SupportsShouldProcess, ConfirmImpact = 'Medium')] param ( [Parameter(Mandatory)] [string] $Computername, [ValidateRange(0, 65535)] [Int] $TCPPort = 8087, [ValidateSet('1.0')] [string] $ApiVersion = '1.0', [ValidateNotNull()] [System.Management.Automation.PSCredential] [System.Management.Automation.Credential()] $Credential = (Get-Credential -Message 'Enter your credentials'), [Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)] [Int] $Id, [Parameter(ParameterSetName = 'PhoneTag', Mandatory)] [Int] $PhoneTagId, [Parameter(ParameterSetName = 'ServiceTag', Mandatory)] [Int] $ServiceTagId, [Parameter(ParameterSetName = 'CommonTag', Mandatory)] [Int] $CommonTagId, [Parameter(ParameterSetName = 'VLAN', Mandatory)] [Int] $VLANId, [Switch] $Remove ) Begin { $UriArray = @($ComputerName, $TCPPort, $ApiVersion) $BaseURL = ('https://{0}:{1}/api/v{2}/infrastructure/component' -f $UriArray) } Process { $Params = @{ } $Params.Add('Credential', $Credential) Switch ($Remove) { $false { $Method = 'Put' } $true { $Method = 'Delete' } } $Params.Add('Method', $Method) Switch ($PsCmdlet.ParameterSetName) { 'PhoneTag' { $EndpointUri = 'phones' $TypeId = $PhoneTagId } 'ServiceTag' { $EndpointUri = 'services' $TypeId = $ServiceTagId } 'CommonTag' { $EndpointUri = 'tags' $TypeId = $CommonTagId } 'VLAN' { $EndpointUri = 'vlans' $TypeId = $VLANId } } $Params.Add('Uri', ('{0}/{1}/{2}/{3}' -f $BaseURL, $Id, $EndpointUri, $TypeId)) if ($PSCmdlet.ShouldProcess(('{0} Id: {1} Type: {2} TypeId: {3}' -f $Method, $Id, $PsCmdlet.ParameterSetName, $TypeId))) { $APIObjectColl = Invoke-PFRestMethod @Params } $Result = foreach ($APIObject in $APIObjectColl) { $Properties = [ordered]@{ 'Method' = $Method 'Id' = $Id 'Type' = $PsCmdlet.ParameterSetName 'TypeId' = $TypeId } New-Object psobject -Property $Properties } $Result } End { } } |