Scripts/ProtectionJob/Get-CohesityProtectionJob.ps1
function Get-CohesityProtectionJob { <# .SYNOPSIS Gets a list of protection jobs filtered by the specified parameters. .DESCRIPTION If no parameters are specified, all protection jobs (both active and inactive) on the Cohesity Cluster are returned. Note that the deleted protection jobs are not returned, by default. You may specify the OnlyDeleted parameter to get the deleted protection jobs. Specifying parameters filters the results that are returned. .NOTES Published by Cohesity .LINK https://cohesity.github.io/cohesity-powershell-module/#/README .EXAMPLE Get-CohesityProtectionJob -Names Test-Job Gets the protection job with name "Test-Job". .EXAMPLE Get-CohesityProtectionJob -OnlyActive Gets only the active protection jobs on the Cohesity Cluster. .EXAMPLE Get-CohesityProtectionJob -OnlyDeleted Gets only the deleted protection jobs on the Cohesity Cluster. #> [OutputType('System.Array')] [CmdletBinding()] Param( [Parameter(Mandatory = $false)] # Filter by a list of protection job ids. [long[]]$Ids, [Parameter(Mandatory = $false)] # Filter by a list of protection job names. [string[]]$Names, [Parameter(Mandatory = $false)] # Filter by policy ids that are associated with protection jobs. # Only jobs associated with the specified policy ids, are returned. [string[]]$PolicyIds, [Parameter(Mandatory = $false)] # Filter by environment types such as kVMware, kView, kSQL, kPuppeteer, kPhysical, kPure, kNetapp, kGenericNas, kHyperV, kAcropolis, kAzure. # Only jobs protecting the specified environment types are returned. # NOTE: kPuppeteer refers to Cohesity's remote adapter. [Cohesity.Model.ProtectionJob+EnvironmentEnum[]]$Environments, [Parameter(Mandatory = $false)] # If set, only the active jobs are returned. [switch]$OnlyActive, [Parameter(Mandatory = $false)] # If set, only the inactive jobs are returned. [switch]$OnlyInactive, [Parameter(Mandatory = $false)] # If set, return only the deleted jobs that still have snapshots associated with them. # If not set, the deleted jobs are not returned. [switch]$OnlyDeleted ) Begin { } Process { $url = '/irisservices/api/v1/public/protectionJobs?includeLastRunAndStats=true' $filter = "" if ($OnlyActive.IsPresent) { $filter += "&isActive=true" } if ($OnlyInactive.IsPresent) { $filter += "&isActive=false" } if ($OnlyDeleted.IsPresent) { $filter += "&isDeleted=true" } if ($Ids) { $filter += "&ids=" + ($Ids -join ",") } if ($Names) { $Names = [System.Web.HttpUtility]::UrlEncode($Names).split('+') $filter += "&names=" + ($Names -join ",") } if ($PolicyIds) { $filter += "&policyIds=" + ($PolicyIds -join ",") } if ($Environments) { $envList = @() foreach ($item in $Environments) { # converting KVMware to kVMware $envText = $item.ToString() $envList += $envText.SubString(0, 1).ToLower() + $envText.SubString(1, $envText.Length - 1) } $filter += "&environments=" + ($envList -join ",") } if ($filter -ne "") { $url += $filter } $resp = Invoke-RestApi -Method Get -Uri $url if ($resp) { if(-not $OnlyDeleted.IsPresent) { $resp = @($resp | where-object { $_.Name -inotmatch '_DELETED'}) } # if($Names) { # $resp = @($resp | where-object { $Names -contains $_.Name}) # } # tagging reponse for display format ( configured in Cohesity.format.ps1xml ) @($resp | Add-Member -TypeName 'System.Object#ProtectionJob' -PassThru) } } End { } } |