Public/Add-Computers.ps1
<#PSScriptInfo .VERSION 1.0 .GUID 972a6d04-f905-4347-98b1-6bf00d8ce204 .AUTHOR dmcanady .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES .PRIVATEDATA #> function Add-Computers { param ( [string[]]$serial_numbers, [string[]]$CS_numbers ) $script:format = @{"format" = "yyyy-MM-dd HH:mm:ss" } #If sent serial if (-not([string]::IsNullOrEmpty($serial_numbers))) { foreach ($serial_number in $serial_numbers) { #sets new ID number $MaxID = Get-Computers | sort -Property ID -Descending | select -First 1 $NewMaxID = $MaxID.ID + 1; #sets parameters for servicenow pull $ComputerData = @{ "Table" = "alm_hardware"; "Filter" = @(@("serial_number", "-like", "$serial_number"), "and", @("u_type", "-in", "Laptop, Mac_Laptop, Tablet")); "Properties" = @("u_last_physical_inventory_date", "serial_number", "display_name", "sys_id", "location"); #Added Location } #saves the pull data from servicenow $scannedDevice = Get-ServiceNowRecord @ComputerData | Add-Member -Name AuditStatus -Value "Unexpected" -MemberType NoteProperty -PassThru | Add-Member -Name ID -Value $NewMaxID -MemberType NoteProperty -PassThru if (-not ([string]::IsNullOrEmpty($scannedDevice))) { #if scannedDevice found in service now add to audit. THIS IS WHERE WE NEED TO FLAG FOR REMEDATION $scannedDevice.u_last_physical_inventory_date = (Get-Date @script:format) $script:Computers += $scannedDevice } # End If else { #if not in servicenow create new object and add to hashtable $BadDevice = [PSCustomObject]@{ "ID" = $NewMaxID; "serial_number" = $serial_number; "u_last_physical_inventory_date" = (Get-Date @script:format); "AuditStatus" = "BadScan"; } $script:Computers += $BadDevice } # End Else } } #Else If sent CS# elseif (-not([string]::IsNullOrEmpty($CS_numbers))) { foreach ($CS in $CS_numbers) { #sets new ID number $MaxID = Get-Computers | sort -Property ID -Descending | select -First 1 $NewMaxID = $MaxID.ID + 1; #sets parameters for servicenow pull $ComputerData = @{ "Filter" = @(@("cat_item", "-in", "cd13f3032b7892001235717bf8da1580, e604f7032b7892001235717bf8da153c, a6b3bfcf2b3892001235717bf8da1530"), "and", @("number", "-eq", $CS)); "Sort" = @("state", "asc"); "Table" = "u_computer_support"; "First" = 1; "Properties" = @("number", "u_asset", "cat_item", "state", "u_substate", "u_depot_location", "u_serial_number", "u_wi_primary_tech"); } #checks that data at leasts starts with CS# to limit unnecessary searches of servicenow if ($CS -like "CS*") { $scannedDevice = Get-ServiceNowRecord @ComputerData | Add-Member -Name AuditStatus -Value "Unexpected" -MemberType NoteProperty -PassThru | Add-Member -Name ID -Value $NewMaxID -MemberType NoteProperty -PassThru | Add-Member -Name Serial -Value "" -MemberType NoteProperty -PassThru #if the scanned CS# found in service now add to audit. THIS IS WHERE WE NEED TO FLAG FOR REMEDATION if (-not ([string]::IsNullOrEmpty($scannedDevice))) { $script:Computers += $scannedDevice DataFormat #format data for display } # End If }#End If else { #if not in servicenow create new object and add to hashtable as $BadDevice = [PSCustomObject]@{ "ID" = $NewMaxID; "number" = $CS; "AuditStatus" = "BadScan"; } $script:Computers += $BadDevice } # End Else } } } |