ExportedFunctions/Get-AnsibleJobTemplate.ps1
function Get-AnsibleJobTemplate { <# .SYNOPSIS Gets one or all job templates. .EXAMPLE Get-AnsibleJobTemplate Gets all job templates. .EXAMPLE Get-AnsibleJobTemplate | where { $_.project -eq 4 } Gets all job templates that belong to project ID 4. .EXAMPLE Get-AnsibleJobTemplate 'Demo Job Template' Gets details about job template named 'Demo Job Template'. .EXAMPLE $jobTemplate = Get-AnsibleJobTemplate -ID 5 .OUPUTS Strongly typed job template object(s). #> [CmdletBinding(DefaultParameterSetName='Filter')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidGlobalVars", "Global:DefaultAnsibleTower")] Param ( [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName='Filter')] [string]$Name, [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName='ID')] [int]$ID, $AnsibleTower = $Global:DefaultAnsibleTower ) process { $Filter = @{} if($PSBoundParameters.ContainsKey("Name")) { if($Name.Contains("*")) { $Filter["name__iregex"] = $Name.Replace("*", ".*") } else { $Filter["name"] = $Name } } if ($ID) { $return = Invoke-GetAnsibleInternalJsonResult -ItemType "job_templates" -Id $ID -AnsibleTower $AnsibleTower } else { $return = Invoke-GetAnsibleInternalJsonResult -ItemType "job_templates" -AnsibleTower $AnsibleTower -Filter $Filter } if (!$return) { # Nothing returned from the call return } foreach ($ResultObject in $return) { # Shift back to json and let newtonsoft parse it to a strongly named object instead $JsonString = $ResultObject | ConvertTo-Json $AnsibleObject = $JsonParsers.ParseToJobTemplate($JsonString) $AnsibleObject.AnsibleTower = $AnsibleTower Write-Output $AnsibleObject $AnsibleObject = $null } } } |