Public/Providers.ps1
|
function New-TMProvider { <# .SYNOPSIS Creates a Provider in TransitionManager. .DESCRIPTION Creates a Provider either from a Provider name or from a prebuilt Provider object. .PARAMETER TMSession A TMSession object or session name to use for the request. Defaults to `'Default'`. .PARAMETER Name The Provider name to create when using the `ByName` parameter set. .PARAMETER Provider The Provider object to create when using the `ByObject` parameter set. .PARAMETER PassThru Switch indicating that the created Provider should be returned. .EXAMPLE New-TMProvider -Name 'ServiceNow' -PassThru Creates a Provider named `ServiceNow` and returns it. .EXAMPLE $Provider = [pscustomobject]@{ name = 'CMDB' } New-TMProvider -Provider $Provider -PassThru Creates a Provider from a prepared object and returns it. .NOTES Choose the parameter set that matches whether you already have a Provider object prepared. #> [CmdletBinding(DefaultParameterSetName = 'ByName')] [OutputType([TMProvider[]])] param( [Parameter(Mandatory = $false)] [psobject] $TMSession = 'Default', [Parameter( Mandatory = $true, ParameterSetName = 'ByName', Position = 0)] [string] $Name, [Parameter(Mandatory = $true, ParameterSetName = 'ByObject', Position = 0)] [psobject] $Provider, [Parameter(Mandatory = $false)] [switch] $PassThru ) $TMSession = Get-TMSession $TMSession if ($PSCmdlet.ParameterSetName -eq 'ByName') { $Provider = [TMProvider]::new($Name) } $ProviderCheck = Get-TMProvider -Name $Provider.name if ($ProviderCheck) { Write-Verbose 'The Provider already exists' return $PassThru.IsPresent ? $ProviderCheck : $null } $bodyParams = @{ name = $Provider.name description = $Provider.description comment = $Provider.comment project = $TMSession.UserContext.Project.Id } $Response = Invoke-TMRestMethod -Api provider -Method Post -BodyParams $bodyParams if ($PassThru.IsPresent) { return ,[TMProvider]::new($Response) } } function Get-TMProvider { <# .SYNOPSIS Gets Providers from TransitionManager. .DESCRIPTION Retrieves Provider records from TM and optionally filters them by name. .PARAMETER TMSession A TMSession object or session name to use for the request. Defaults to `'Default'`. .PARAMETER Name The Provider name to retrieve. .PARAMETER ResetIDs Switch indicating that identifiers on the returned objects should be refreshed or normalized during retrieval. .EXAMPLE Get-TMProvider -Name 'ServiceNow' Retrieves the Provider named `ServiceNow`. .NOTES This function resolves the session by calling `Get-TMSession`. #> [OutputType([TMProvider[]])] param( [Parameter(Mandatory = $false)][PSObject]$TMSession = 'Default', [Parameter(Mandatory = $false)][String]$Name, [Parameter(Mandatory = $false)][Switch]$ResetIDs ) $TMSession = Get-TMSession $TMSession $Response = Invoke-TMRestMethod -Api provider -Method Get [TMProvider[]]$Providers = @($Response | ForEach-Object { [TMProvider]::new($_) } | Sort-Object -Property 'Name') if ($ResetIDs) { foreach ($Provider in $Providers) { $Provider.Id = $null } } if ($Name) { return ,@($Providers | Where-Object { $_.Name -eq $Name }) } else { return ,$Providers } } |