function Search-CMDB{ [CmdletBinding()] param ( [Parameter(HelpMessage = 'Search LANDesk CMDB by the Name of the CMDM Item' )] [string]$Hostname, [Parameter(HelpMessage = 'Search for the CMDB Item by Asset Tag Number' )] [string]$AssetTag, [Parameter(HelpMessage = 'Search for the CMDB Item by Location' )] [string]$Location, [Parameter(HelpMessage = 'Search for the CMDB Item by Guid/Key' )] [string]$key, [Parameter(HelpMessage = 'Specifying Server', Mandatory = $false, DontShow = $true)] [string] $server = $(Connect-LANDesk)[1], [Parameter(HelpMessage = 'Specifying LanDesk Framework for api', Mandatory = $false, DontShow = $true)] [string] $framework = $(Connect-LANDesk)[2], [Parameter(HelpMessage = 'Specifying LanDesk Headers for api', Mandatory = $false, DontShow = $true)] [hashtable] $Headers = $(Connect-LANDesk)[0] ) if(($Hostname + $AssetTag + $Location + $key) -eq ''){ Write-Warning 'Input cannot be null' return } $attributes = @( 'Guid', 'Title', '_ConfigTypesCategory', 'Status', '_SHSAssetTag', '_SerialNumber', '_Model', 'ConfigurationItem', 'ConfigurationItem.Guid', 'ConfigurationItem._SHSDELAsset', 'ConfigurationItem._SHSVendorPC', 'CreationDate', 'CreationUser', 'LastUpdate', 'LastUpdateUser', 'Lifecycle', '_LocationDetails', '_SHSLocation3', '_SHSCINotes', '_SHSCIPrimaryOwner', '_SHSSCCMScanDate', '_SHSChassisType', '_SHSPOANumber' ) $attributesString = $attributes -join ',' $uri = 'http://' + $server + '/' + $framework + '/api/' $searchUri = $uri + 'query/?class_name=_CMDBManagement.Call&page_size=20000000&attributes=' + $attributesString + '&v=*' + '&cns=' + '_SHSDeleted-e-0_a_' + 'Title' + '-c-1_a_' + '_SHSLocation3' +'-c-2-&c0=False&c1=' + $Hostname + '&c2=' + $Location $SearchResults = (Invoke-RestMethod -Uri $searchUri -Headers $headers -Method get).DataRows $output = @() if($SearchResults -is [array]){ foreach($result in $SearchResults){ $cmdbRecord = [PSCustomObject]@{ Hostname = $result.values.Title AssetTag = $result.values._SHSAssetTag Status = $result.values.Status Type = $result.values._ConfigTypesCategory Model = $result.values._Model Chassis = $result.values._SHSChassisType SerialNumber = $result.values._SerialNumber POA = $result.values._SHSPOANumber Location = $result.values._SHSLocation3 CreationDate = $result.values.CreationDate CreationUser = $result.values.CreationUser LastUpdate = $result.values.LastUpdate LastUpdateUser = $result.values.LastUpdateUser Lifecycle = $result.values.Lifecycle Guid = $result.Key CI = $result.values.ConfigurationItem } $output += $cmdbRecord } } else{ $output = [PSCustomObject]@{ Hostname = $SearchResults.values.Title AssetTag = $SearchResults.values._SHSAssetTag Status = $SearchResults.values.Status Type = $SearchResults.values._ConfigTypesCategory Model = $SearchResults.values._Model Chassis = $SearchResults.values._SHSChassisType SerialNumber = $SearchResults.values._SerialNumber POA = $SearchResults.values._SHSPOANumber Location = $SearchResults.values._SHSLocation3 CreationDate = $SearchResults.values.CreationDate CreationUser = $SearchResults.values.CreationUser LastUpdate = $SearchResults.values.LastUpdate LastUpdateUser = $SearchResults.values.LastUpdateUser Lifecycle = $SearchResults.values.Lifecycle Guid = $SearchResults.Key CI = $SearchResults.values.ConfigurationItem } } return $output | Select-Object -Property Hostname, Type, Location }