Dynamic/Remove-AtwsContact.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
#Requires -Version 4.0 #Version 1.6.10 <# .COPYRIGHT Copyright (c) ECIT Solutions AS. All rights reserved. Licensed under the MIT license. See https://github.com/ecitsolutions/Autotask/blob/master/LICENSE.md for license information. #> Function Remove-AtwsContact { <# .SYNOPSIS This function deletes a Contact through the Autotask Web Services API. .DESCRIPTION This function deletes a Contact through the Autotask Web Services API. Entities that have fields that refer to the base entity of this CmdLet: AccountNote AccountToDo AttachmentInfo ClientPortalUser ContactBillingProductAssociation ContactGroupContact Contract InstalledProduct NotificationHistory Opportunity Quote SalesOrder SurveyResults Ticket TicketAdditionalContact TicketChangeRequestApproval .INPUTS [Autotask.Contact[]]. This function takes objects as input. Pipeline is supported. .OUTPUTS Nothing. This fuction just deletes the Autotask.Contact that was passed to the function. .EXAMPLE Remove-AtwsContact [-ParameterName] [Parameter value] .LINK New-AtwsContact .LINK Get-AtwsContact .LINK Set-AtwsContact #> [CmdLetBinding(SupportsShouldProcess = $true, DefaultParameterSetName='Input_Object', ConfirmImpact='Low')] Param ( # Any objects that should be deleted [Parameter( ParametersetName = 'Input_Object', ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [Autotask.Contact[]] $InputObject, # The unique id of an object to delete [Parameter( Mandatory = $true, ParametersetName = 'By_parameters' )] [ValidateNotNullOrEmpty()] [long[]] $Id ) begin { $entityName = 'Contact' # Enable modern -Debug behavior if ($PSCmdlet.MyInvocation.BoundParameters['Debug'].IsPresent) { $DebugPreference = 'Continue' } else { # Respect configured preference $DebugPreference = $Script:Atws.Configuration.DebugPref } Write-Debug ('{0}: Begin of function' -F $MyInvocation.MyCommand.Name) if (!($PSCmdlet.MyInvocation.BoundParameters['Verbose'].IsPresent)) { # No local override of central preference. Load central preference $VerbosePreference = $Script:Atws.Configuration.VerbosePref } } process { # Collect copies of InputObject if passed any IDs # Has to collect in batches, or we are going to get the # dreaded 'too nested SQL' error If ($Id.count -gt 0) { $InputObject = @() for ($i = 0; $i -lt $Id.count; $i += 200) { $j = $i + 199 if ($j -ge $Id.count) { $j = $Id.count - 1 } # Create a filter with the current batch $Filter = 'Id -eq {0}' -F ($Id[$i .. $j] -join ' -or Id -eq ') $InputObject += Get-AtwsData -Entity $entityName -Filter $Filter } } Write-Verbose ('{0}: Deleting {1} object(s) from Autotask' -F $MyInvocation.MyCommand.Name, $InputObject.Count) if ($InputObject) { $caption = $MyInvocation.MyCommand.Name $verboseDescription = '{0}: About to delete {1} {2}(s). This action cannot be undone.' -F $caption, $InputObject.Count, $entityName $verboseWarning = '{0}: About to delete {1} {2}(s). This action cannot be undone. Do you want to continue?' -F $caption, $InputObject.Count, $entityName if ($PSCmdlet.ShouldProcess($verboseDescription, $verboseWarning, $caption)) { Remove-AtwsData -Entity $InputObject } } } end { Write-Debug ('{0}: End of function' -F $MyInvocation.MyCommand.Name) } } |