functions/Get-SL1Organization.ps1
Function Get-SL1Organization { [CmdletBinding(DefaultParameterSetName='Filter')] Param( [Parameter(Mandatory,Position=0, ValueFromPipeline, ParameterSetName='ID')] [ValidateScript({$_ -ge 0})] [int64]$Id, [Parameter(Position=0, ValueFromPipeline, ParameterSetName='Filter')] [ValidateNotNullOrEmpty()] [string]$Filter, [Parameter(Position=1, ParameterSetName='Filter')] [ValidateRange(0,([int64]::MaxValue))] [int64]$Limit ) Begin { Assert-SL1Connected if ($PSCmdlet.ParameterSetName -eq 'Filter' -and $Limit -eq 0) { $Limit = $Script:SL1Defaults.DefaultLimit } } Process { switch ($PSCmdlet.ParameterSetName) { 'ID' { $SL1Organization = Invoke-SL1Request GET "$($Script:SL1Defaults.APIROOT)/api/organization/$($Id)" switch ($SL1Organization.StatusCode) { { $_ -eq [system.net.httpstatuscode]::OK } { $Organization = ConvertFrom-Json $SL1Organization.content ConvertTo-Organization -SL1Organization $Organization -ID $Id } { $_ -eq [system.net.httpstatuscode]::Forbidden } { throw "You are not authorized to get information of organization with id $($Id)"} { $_ -eq [System.Net.HttpStatusCode]::NotFound } { throw "organization with id $($Id) is not found in the SL1 system" } } } 'Filter' { if ($Filter -ne "") { $SL1OrganizationQuery = Invoke-SL1Request Get "$($Script:SL1Defaults.APIROOT)/api/organization?$($Filter)&limit=$($Limit)" } else { $SL1OrganizationQuery = Invoke-SL1Request Get "$($Script:SL1Defaults.APIROOT)/api/organization?limit=$($Limit)" } switch ($SL1Organizationquery.StatusCode) { { $_ -eq [system.net.httpstatuscode]::OK} { $Json = ConvertFrom-Json $SL1OrganizationQuery.content if ($Json.total_matched -eq 0) { throw "No organizations found with filter '$($Filter)'" } else { $Organizations = ConvertFrom-Json ((Invoke-SL1Request Get "$($Script:SL1Defaults.APIROOT)/api/organization?$($Filter)&limit=$($Limit)&hide_filterinfo=1&extended_fetch=1").Content) foreach ($OrganizationURI in (($Organizations | Get-Member -MemberType NoteProperty).name) ) { ConvertTo-Organization -SL1Organization $Organizations.$OrganizationURI -ID "$( ($OrganizationURI -split '/')[-1])" } } } { $_ -eq [system.net.httpstatuscode]::Forbidden } { throw "You are not authorized to get information on organizations"} { $_ -eq [System.Net.HttpStatusCode]::NotFound } { throw "Organization with id $($Id) is not found in the SL1 system" } } } } } } |