Functions/Base/Get-OIMObject.ps1
function Get-OIMObject { [CmdletBinding(SupportsPaging = $true, DefaultParameterSetName = "ObjectSearch")] param( [Parameter( ParameterSetName = "Object", Mandatory = $true, ValueFromPipeline = $true)] $Object, [Parameter(Position = 0,ParameterSetName = "ObjectSingle", Mandatory = $true)] [Parameter(Position = 0,ParameterSetName = "ObjectSearch", Mandatory = $true)] [Alias("Type")] [string] $ObjectName, [Parameter(ParameterSetName = "ObjectSingle", Mandatory = $true)] [Alias("uid")] $id, [Parameter(ParameterSetName = "ObjectSearch")] [ValidateSet("Default", "BulkReadOnly", "Slim", "ForeignDisplays", "ForeignDisplaysForAllColumns")] $LoadType = "BulkReadOnly", [Parameter(ParameterSetName = "ObjectSearch")] $Where, [Parameter(ParameterSetName = "ObjectSearch")] $OrderBy, [Parameter(ParameterSetName = "ObjectSearch")] $displayColumns ) BEGIN { $limit = $PSCmdlet.PagingParameters.First $SelectPAram = $null if ( $PSBoundParameters.Keys.contains("First")) { $SelectPAram = @{First = $limit } } }#begin PROCESS { #Assert-VersionRequirement -RequiredVersion 8.1 switch ($PSCmdlet.ParameterSetName) { 'Object' { ForEach ($item in $object) { $xmlXObjectKey = [xml] $item.xObjectKey GEt-OIMObject -ObjectName $xmlXObjectKey.key.T -id $xmlXObjectKey.key.P } } 'ObjectSingle' { $URI = "$Script:BaseURI/api/entity/$ObjectName/$id" $result = Invoke-OIMRestMethod -Uri $URI -Method GET -WebSession $Script:WebSession } 'ObjectSearch' { $URI = "$Script:BaseURI/api/entities/$ObjectName`?LoadType=$LoadType" $queryString = $PSBoundParameters | Get-OIMParameter -ParametersToKeep LoadType, limit, offset | ConvertTo-QueryString Write-Verbose ($PSBoundParameters.Keys -Join "-") if ($null -ne $queryString) { #Build URL from base URL $URI = "$URI&$queryString" } $body = $PSBoundParameters | Get-OIMParameter -ParametersToKeep where, displayColumns | ConvertTo-Json if($null -eq $body){ $result = Invoke-OIMRestMethod -Uri $URI -WebSession $Script:WebSession }else{ $result = Invoke-OIMRestMethod -Uri $URI -Method POST -Body $body -ContentType 'application/json' -WebSession $Script:WebSession } } } #send request to web service If ($null -ne $result) { #$result | Add-ObjectDetail -typename $TypeName $result.Values | Select-Object @SelectPAram } }#process END { }#end } |