124 lines
4.2 KiB
PowerShell
124 lines
4.2 KiB
PowerShell
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
|
|
|
|
} |