private/Get-WarrantyHudu.ps1
function Get-WarrantyHudu { [CmdletBinding()] Param( [string]$HuduAPIKey, [String]$HuduBaseURL, [String]$HuduDeviceAssetLayout, [string]$HuduWarrantyField, [boolean]$SyncWithSource, [boolean]$Missingonly, [boolean]$OverwriteWarranty ) write-host "Source is Hudu. Grabbing all devices." -ForegroundColor Green #Get the Hudu API Module if not installed if (Get-Module -ListAvailable -Name HuduAPI) { Import-Module HuduAPI } else { Install-Module HuduAPI -Force Import-Module HuduAPI } New-HuduAPIKey $HuduAPIKey New-HuduBaseUrl $HuduBaseURL #Get the Asset Layout from Hudu $layout = Get-HuduAssetLayouts -name $HuduDeviceAssetLayout if (!$layout) { Write-Error "Hudu Layout Not Found" exit } #Process field name into API format $HuduProcessedFieldName = ($HuduWarrantyField.ToLower()) -replace " ", "_" #Get Devices $Devices = Get-HuduAssets -assetlayoutid $layout.id $warrantyObject = foreach ($device in $Devices) { $i++ Write-Progress -Activity "Grabbing Warranty information" -status "Processing $($device.primary_serial). Device $i of $($devices.Count)" -percentComplete ($i / $Devices.Count * 100) $WarState = Get-Warrantyinfo -DeviceSerial $device.primary_serial -client $device.company_name if ($WarState.enddate){ if($(($WarState.enddate).GetType().name) -eq "DateTime" ){ $WarState.enddate = $WarState.enddate.ToString("o") } } if ($SyncWithSource -eq $true) { $field = $device.fields | where-object {$_.label -eq $HuduWarrantyField} $device.fields = @{ "$HuduProcessedFieldName" = "$($WarState.enddate)" } switch ($OverwriteWarranty) { $true { if ($null -ne $warstate.EndDate) { $null = set-huduasset -name $device.name -company_id $device.company_id -asset_layout_id $layout.id -fields $device.fields -asset_id $device.id } } $false { if ($null -eq $field.value -and $null -ne $warstate.EndDate) { $null = set-huduasset -name $device.name -company_id $device.company_id -asset_layout_id $layout.id -fields $device.fields -asset_id $device.id } } } } $WarState } return $warrantyObject } |