Chat now with support
Chat with Support

KACE Systems Management Appliance 14.0 Common Documents - Administration Guide

About the KACE Systems Management Appliance Getting started
Configuring the appliance
Requirements and specifications Power-on the appliance and log in to the Administrator Console Access the Command Line Console Tracking configuration changes Configuring System-level and Admin-level General Settings Configure appliance date and time settings Managing user notifications Enable Two-Factor Authentication for all users Verifying port settings, NTP service, and website access Configuring network and security settings Configuring session timeout and auto-refresh settings Configuring locale settings Configuring the default theme Configure data sharing preferences About DIACAP compliance requirements Configuring Mobile Device Access Enable fast switching for organizations and linked appliances Linking Quest KACE appliances Configuring history settings Configuring Content Security Policy
Setting up and using labels to manage groups of items Configuring user accounts, LDAP authentication, and SSO Deploying the KACE Agent to managed devices Using Replication Shares Managing credentials Configuring assets
About the Asset Management component Using the Asset Management Dashboard About managing assets Adding and customizing Asset Types and maintaining asset information Managing Software assets Managing physical and logical assets Maintaining and using manual asset information Managing locations Managing contracts Managing licenses Managing purchase records
Setting up License Compliance Managing License Compliance Setting up Service Desk Configure the Cache Lifetime for Service Desk widgets Creating and managing organizations Importing and exporting appliance resources
Managing inventory
Using the Inventory Dashboard Using Device Discovery Managing device inventory
About managing devices Features available for each device management method About inventory information Tracking changes to inventory settings Managing inventory information Finding and managing devices Registering KACE Agent with the appliance Provisioning the KACE Agent Manually deploying the KACE Agent Using Agentless management Adding devices manually in the Administrator Console or by using the API Forcing inventory updates Managing MIA devices Obtaining Dell warranty information
Managing applications on the Software page Managing Software Catalog inventory
About the Software Catalog Viewing Software Catalog information Adding applications to the Software Catalog Managing License assets for Software Catalog applications Associate Managed Installations with Cataloged Software Using software metering Using Application Control Update or reinstall the Software Catalog
Managing process, startup program, and service inventory Writing custom inventory rules
Deploying packages to managed devices
Distributing software and using Wake-on-LAN Broadcasting alerts to managed devices Running scripts on managed devices Using Task Chains
Patching devices and maintaining security
Using the Security Dashboard About patch management Subscribing to and downloading patches Creating and managing patch schedules Managing patch inventory Managing Windows Feature Updates Managing Dell devices and updates Managing Linux package upgrades Manage quarantined file attachments
Using reports and scheduling notifications Monitoring devices
Getting started with monitoring Working with monitoring profiles Managing monitoring for devices Working with alerts
Using the Service Desk
Configuring Service Desk Using the Service Desk Dashboard Managing Service Desk tickets, processes, and reports
Overview of Service Desk ticket lifecycle Creating tickets from the Administrator Console and User Console Creating and managing tickets by email Viewing tickets and managing comments, work, and attachments Merging tickets Using the ticket escalation process Using Service Desk processes Using Ticket Rules Run Service Desk reports Archiving, restoring, and deleting tickets Managing ticket deletion
Managing Service Desk ticket queues About User Downloads and Knowledge Base articles Customizing Service Desk ticket settings Configuring SMTP email servers
Maintenance and troubleshooting
Maintaining the appliance Troubleshooting the appliance
Appendixes Glossary About us Legal notices

Valid XML schema for Windows

Adding devices manually using the API

You can add devices to the appliance manually by creating an XML file and uploading that file to the appliance using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the KACE Agent for security reasons, and devices that cannot connect to the LAN (Local Area Network) to report inventory.

The XML file you create can be modeled on the sample script in this section.

Devices that are added to inventory through the API do not count toward the license limit. See View product licensing information.

Application inventory that is uploaded through the API is displayed on the Software page, but it is not displayed on the Software Catalog page. See:

NOTE: The inventory API supports HTTP and HTTPS communications, depending on your appliance configuration. To upload inventory information, use the following URL: http://appliance_hostname/service/wsapi.php, where appliance_hostname is the host name of your appliance.
Submit inventory information using the API

To submit inventory using the API, you first need to generate an XML file that contains the inventory information.

For examples, see:

After you generate an XML file with the expected content, you can submit inventory using the API.

Submit keyreq=true in the body of the request to get a session string in response.
a.
Construct the auth string as:
b.
Run MD5 on the auth string.
Submit req=newuuid&key=$auth in the body of the request to get a UUID in response.

Submit req=loadxml&key=$auth&KUID=$uuid&version=6.0 in the GET line and inventory XML in the body of the request.

See Sample Perl script.

Sample Perl script

You can use Perl scripts to upload XML files with device inventory information to the appliance.

The following is a sample Perl script that uploads a user-created XML file to the appliance. For information about using this script, contact Quest Support at https://support.quest.com/contact-support.


#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
use XML::Simple;
use Data::Dumper;
use Digest::MD5 qw(md5 md5_hex md5_base64);

# Curl Output Handler ...
my $response;
sub write_data($$$$) {
$response = shift;
return length($response);
}

# -----------------------------------------------------
# Appliance Configuration ...
# -----------------------------------------------------
my $password = "xxx"; # password set in Settings -> Security Settings
my $host = "hostname"; # hostname or IP address here
my $http = "https"; # HTTP or HTTPS

# --------------------------------------------------------
# Build XML Package ...
# --------------------------------------------------------
my $simple = new XML::Simple(keeproot => 1, forcearray => 1);
my $data = $simple->XMLin("machine.xml");
my $uuid = $data->{MachineStruct}->[0]->{MAC}->[0];

# --------------------------------------------------------
# Setup CURL stuff ...
# --------------------------------------------------------
my $url = "$http://$host/service/wsapi.php";
my $ch = WWW::Curl::Easy->new;
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_SSL_VERIFYPEER, 0); # ok for self-signed ca
$ch->setopt(CURLOPT_VERBOSE, 0);
$ch->setopt(CURLOPT_WRITEFUNCTION, \&write_data); # return into a variable
$ch->setopt(CURLOPT_HEADER, 0);
$ch->setopt(CURLOPT_TIMEOUT, 40); # times out after 4s
$ch->setopt(CURLOPT_POST, 1);
$ch->setopt(CURLOPT_COOKIEFILE, '/tmp/cookiefile.txt');

# --------------------------------------------------------
# STEP 1 - Request Session from the appliance ...
# --------------------------------------------------------
$ch->setopt(CURLOPT_POSTFIELDS, "keyreq=true"); # add POST fields
my $out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
my $sess = $response;

# --------------------------------------------------------
# STEP 2 - Build Authorization Token ...
# --------------------------------------------------------
my $auth = md5_hex("$sess|".md5_hex($password));

# --------------------------------------------------------
# STEP 3 - Request new UUID from the appliance (if creating a new
# device record. If editing an existing device
# be sure it is set in the XML ...
# --------------------------------------------------------
if ( 1 ) {
print "Using UUID From XML File: $uuid\n";
} else {
$ch->setopt(CURLOPT_POSTFIELDS,"req=newuuid&key=$auth");
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
$uuid = $response;
$data->{MachineStruct}->[0]->{MAC}->[0] = $uuid;
$data->{MachineStruct}->[0]->{NAME}->[0] = "WSAPI-" . $uuid;
print "Created New UUID: $uuid\n";
}

# convert Simple XML hash back to XML string ...
my $xml = $simple->XMLout(
$data,
KeepRoot => 1,
NoAttr => 1,
);

# --------------------------------------------------------
# STEP 4 - Send XML to the appliance ...
# --------------------------------------------------------
my @curlHeader = ("Content-Type: text/xml");
$url = "$http://$host/service/wsapi.php?req=loadxml&key=$auth&KUID=
$uuid&version=6.0";
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_HTTPHEADER, \@curlHeader);
$ch->setopt(CURLOPT_POSTFIELDS, $xml);
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " . $ch->strerror($out) . " " . $ch->errbuf . "\n");
}

print "Loaded $uuid to the appliance ($host)\n";

Valid XML schema for Windows

Files used to upload inventory information for Windows devices must conform to valid XML schemas.

The following is an example of a valid XML schema for Windows devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=">
http://www.w3.org/2001/XMLSchema-instance"
<NAME>@@__m_computerSystemName__@@</NAME>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK>@@__m_operatingSystemCsdVersion__@@</SERVICE_PACK>
<USER>@@__m_userAccountName__@@</USER>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<DOMAIN>@@__m_computerSystemDomain__@@</DOMAIN>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<OS_INSTALLED_DATE>@@__m_operatingSystemInstallDate__@@</OS_INSTALLED_DATE>
<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<LAST_SHUTDOWN>@@__m_operatingSystemLastBootupTime__@@</LAST_SHUTDOWN>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>
<SYSTEM_DIRECTORY>@@__m_operatingSystemWindowsDirectory__@@</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>@@__m_operatingSystemDescription__@@</SYSTEM_DESCRIPTION>
<RAM_TOTAL>@@__m_physicalMemoryTotalSize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_computerSystemManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL>@@__m_computerSystemModel__@@</CS_MODEL>
<CHASSIS_TYPE>@@__m_systemEnclosureChassisType__@@</CHASSIS_TYPE>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<USER_LOGGED>@@__m_computerSystemUserName__@@</USER_LOGGED>
<CS_DOMAIN>@@__m_computerSystemDomain__@@</CS_DOMAIN>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosDescription__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>@@__m_motherboardDevicePrimaryBusType__@@
</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>@@__m_motherboardDeviceSecondaryBusType__@@
</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: @@__m_processorCount__@@
CPU Core Count: @@__m_processorCoreCount__@@
@@__m_processorList__@@ </PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>@@__m_registryCurrentSize__@@</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>@@__m_registryMaximumSize__@@</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@ </DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@ </NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@ </STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@ </PROCESSES>
<NT_SERVICES>
@@__m_servicesList__@@ </NT_SERVICES>
<INSTALLED_software>
@@__m_installedProgramsList__@@ </INSTALLED_software>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
</MachineStruct>
Example using the XML schema for Windows devices

You can view an example of a file that conforms to the valid XML schema for Windows devices.

The following is an example of valid XML that uses the schema in Valid XML schema for Windows.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NAME>TestComputer</NAME>
<IP>10.10.10.10</IP>
<MAC>F1234567-C2D2-4055-85BB-294E6A3D22D9</MAC>
<OS_NAME>Microsoft Windows 7 Professional</OS_NAME>
<OS_NUMBER>6.1.7601.17514</OS_NUMBER>
<OS_MAJOR>6</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 1</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>6.1.7601</OS_VERSION>
<OS_BUILD>17514</OS_BUILD>
<OS_INSTALLED_DATE>2017-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2017-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2017-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>Windows 7 Machine</SYSTEM_DESCRIPTION>
<RAM_TOTAL>512.00MB</RAM_TOTAL>
<RAM_USED>180MB</RAM_USED>
<CS_MANUFACTURER>VMware, Inc.</CS_MANUFACTURER>
<CS_MODEL>VMware Virtual Platform</CS_MODEL>
<CHASSIS_TYPE>Other</CHASSIS_TYPE>
<USER_LOGGED>Tom</USER_LOGGED>
<CS_DOMAIN>WORK</CS_DOMAIN>
<USER_NAME>Administrator</USER_NAME>
<USER_DOMAIN>Work</USER_DOMAIN>
<BIOS_NAME>PhoenixBIOS 4.0 Release 5.5 </BIOS_NAME>
<BIOS_VERSION>INTEL - 6040000</BIOS_VERSION>
<BIOS_MANUFACTURER>Phoenix Technologies LTD</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>PhoenixBIOS 4.0 Release 5.5 </BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>VMware-56 4d bd d3 5e 4f a5 4e-6a ce a0 d3 39 bd ae 02
</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>PCI</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>ISA</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: 1
CPU Core Count: 0
CPU0: Intel Celeron processor (0 cores) </PROCESSORS>
<SOUND_DEVICES>Creative AudioPCI (ES1371,ES1373) (WDM)
</SOUND_DEVICES>
<CDROM_DEVICES>TSSTcorp DVD+-RW TS-U633F
</CDROM_DEVICES>
<VIDEO_CONTROLLERS>VMware SVGA II
</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>1MB</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>86MB</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
<DiskDrive>
<NAME>Drive C: (Physical Disk) FileSystem: NTFS Used: 2.08GB Total: 39.99GB</NAME>
<DISK_SIZE>39.9906</DISK_SIZE>
<DISK_USED>2.07966</DISK_USED>
<DISK_FREE>37.9109</DISK_FREE>
<PERCENT_USED>5.2</PERCENT_USED>
</DiskDrive>
</DISK_DRIVES>
<NETWORK_INTERFACES>
<NetworkInterface>
<NIC>AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler
Miniport</NIC>
<MAC>00:0C:29:BD:AE:03</MAC>
<IP>192.168.220.132</IP>
<DHCP_ENABLED>True</DHCP_ENABLED>
</NetworkInterface>
</NETWORK_INTERFACES>
<PRINTERS></PRINTERS>
<STARTUP_PROGRAMS>
<StartupProgram>
<NAME>desktop</NAME>
</StartupProgram>
<StartupProgram>
<NAME>VMware Tools</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareTray.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareTray.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools tray application</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
<StartupProgram>
<NAME>VMware User Process</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareUser.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareUser.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools Service</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
</STARTUP_PROGRAMS>
<PROCESSES>
<MachineProcess>
<NAME>konea.exe</NAME>
<COMMAND_EXE>C:\Program Files (x86)\Quest\KACE\konea.exe</COMMAND_EXE>
<COMMAND_ARGS/>
<FILE_INFO>
<FILE_NAME>konea.exe</FILE_NAME>
<FILE_DESCRIPTION>konea</FILE_DESCRIPTION>
<FILE_VERSION>255.239.6</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>255.239.6</PRODUCT_VERSION>
<COMPANY_NAME>Quest Software Inc.</COMPANY_NAME>
</FILE_INFO>
</MachineProcess>
</PROCESSES>
<NT_SERVICES>
<NtService>
<NAME>Alerter</NAME>
<DISPLAY_NAME>Alerter</DISPLAY_NAME>
<STATUS>SERVICE_STOPPED</STATUS>
<STARTUP_TYPE>SERVICE_DISABLED</STARTUP_TYPE>
<DESCRIPTION />
<LOGON_AS_USER>NT AUTHORITY\LocalService</LOGON_AS_USER>
<CAN_INTERACT_WITH_DESKTOP>False</CAN_INTERACT_WITH_DESKTOP>
<COMMAND_EXE>C:\WINDOWS\system32\svchost.exe</COMMAND_EXE>
<COMMAND_ARGS> -k LocalService</COMMAND_ARGS>
<FILE_INFO>
<FILE_NAME>svchost.exe</FILE_NAME>
<FILE_DESCRIPTION>Generic Host Process for Win32 Services</FILE_DESCRIPTION>
<FILE_VERSION>6.1.7600.16385 (win7_rtm.090713-1255)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>6.1.7600.16385</PRODUCT_VERSION>
<COMPANY_NAME>Microsoft Corporation</COMPANY_NAME>
</FILE_INFO>
</NtService>
</NT_SERVICES>
<INSTALLED_software>
<software>
<DISPLAY_VERSION>5.2.38916</DISPLAY_VERSION>
<HELP_LINK />
<README />
<INSTALL_DATE>20170830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>8.0.xxxxx</CLIENT_VERSION>
</MachineStruct>
Valid XML schema for Linux and Mac devices

Files used to upload inventory information for Linux and Mac devices must use valid XML schemas.

The following is an example of an XML schema for Linux and Mac devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct>
<NAME>@@__m_versionHostName__@@</NAME>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK></SERVICE_PACK>
<INSTALL_DATE></INSTALL_DATE>

<OS_ARCH>@@__m_operatingSystemOSArchitecture__@@</OS_ARCH>
<OS_FAMILY>@@__m_operatingSystemOSFamily__@@</OS_FAMILY>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<DOMAIN>@@__m_userAccountDomain__@@</DOMAIN>
<CS_DOMAIN>@@__m_userAccountDomain__@@</CS_DOMAIN>

<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>

<RAM_TOTAL>@@__m_operatingSystemTotalVisibleMemorySize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_biosManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL></CS_MODEL>
<USER_LOGGED>@@__m_userAccountName__@@</USER_LOGGED>
<USER>@@__m_userAccountName__@@</USER>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosName__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS></MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS></MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>@@__m_processorList__@@</PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<MONITOR>@@__m_desktopMonitorDescription__@@</MONITOR>

<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@</DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@</NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@</STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@</PROCESSES>
<INSTALLED_software>
@@__m_installedProgramsList__@@</INSTALLED_software>
</MachineStruct>
Upload an XML file using the Administrator Console

You can upload an XML file that contains device inventory information using the Administrator Console. This type of information is referred to as manual inventory information.

The KACE Agent is installed on the device that is having its inventory information added.

You create the XML file on the device to be inventoried, then move to the appliance to upload the file.

Manual inventory information appears on the Software page but it does not appear on the Software Catalog page. See:

Windows 32-bit systems: C:\Program Files\Quest\KACE
Windows 64-bit systems: C:\Program Files (x86)\Quest\KACE
Mac OS X systems: /Library/Application Support/Quest/KACE/bin
Linux systems: /opt/quest/kace/bin

Where filename is the path to the XML file you want to create. If the path contains spaces, enclose the entire path in double quotation marks.

The Agent collects the inventory data and generates the XML file.

2.
On the appliance Administrator Console, go to the Devices list:
a.
Log in to the appliance Administrator Console, https://appliance_hostname/admin. Or, if the Show organization menu in admin header option is enabled in the appliance General Settings, select an organization in the drop-down list in the top-right corner of the page next to the login information.
b.
On the left navigation bar, click Inventory, then click Devices.
3.
Select Choose Action > New > Manual Device to display the Device Detail page.
4.
Under Import Device, click Browse.
5.
6.
Click Save.

The device's information is added to inventory. If you uploaded an XML file, the appliance ignores all other information on the page and uses the XML file for inventory information.

Example using the XML schema for Windows devices

Adding devices manually using the API

You can add devices to the appliance manually by creating an XML file and uploading that file to the appliance using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the KACE Agent for security reasons, and devices that cannot connect to the LAN (Local Area Network) to report inventory.

The XML file you create can be modeled on the sample script in this section.

Devices that are added to inventory through the API do not count toward the license limit. See View product licensing information.

Application inventory that is uploaded through the API is displayed on the Software page, but it is not displayed on the Software Catalog page. See:

NOTE: The inventory API supports HTTP and HTTPS communications, depending on your appliance configuration. To upload inventory information, use the following URL: http://appliance_hostname/service/wsapi.php, where appliance_hostname is the host name of your appliance.
Submit inventory information using the API

To submit inventory using the API, you first need to generate an XML file that contains the inventory information.

For examples, see:

After you generate an XML file with the expected content, you can submit inventory using the API.

Submit keyreq=true in the body of the request to get a session string in response.
a.
Construct the auth string as:
b.
Run MD5 on the auth string.
Submit req=newuuid&key=$auth in the body of the request to get a UUID in response.

Submit req=loadxml&key=$auth&KUID=$uuid&version=6.0 in the GET line and inventory XML in the body of the request.

See Sample Perl script.

Sample Perl script

You can use Perl scripts to upload XML files with device inventory information to the appliance.

The following is a sample Perl script that uploads a user-created XML file to the appliance. For information about using this script, contact Quest Support at https://support.quest.com/contact-support.


#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
use XML::Simple;
use Data::Dumper;
use Digest::MD5 qw(md5 md5_hex md5_base64);

# Curl Output Handler ...
my $response;
sub write_data($$$$) {
$response = shift;
return length($response);
}

# -----------------------------------------------------
# Appliance Configuration ...
# -----------------------------------------------------
my $password = "xxx"; # password set in Settings -> Security Settings
my $host = "hostname"; # hostname or IP address here
my $http = "https"; # HTTP or HTTPS

# --------------------------------------------------------
# Build XML Package ...
# --------------------------------------------------------
my $simple = new XML::Simple(keeproot => 1, forcearray => 1);
my $data = $simple->XMLin("machine.xml");
my $uuid = $data->{MachineStruct}->[0]->{MAC}->[0];

# --------------------------------------------------------
# Setup CURL stuff ...
# --------------------------------------------------------
my $url = "$http://$host/service/wsapi.php";
my $ch = WWW::Curl::Easy->new;
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_SSL_VERIFYPEER, 0); # ok for self-signed ca
$ch->setopt(CURLOPT_VERBOSE, 0);
$ch->setopt(CURLOPT_WRITEFUNCTION, \&write_data); # return into a variable
$ch->setopt(CURLOPT_HEADER, 0);
$ch->setopt(CURLOPT_TIMEOUT, 40); # times out after 4s
$ch->setopt(CURLOPT_POST, 1);
$ch->setopt(CURLOPT_COOKIEFILE, '/tmp/cookiefile.txt');

# --------------------------------------------------------
# STEP 1 - Request Session from the appliance ...
# --------------------------------------------------------
$ch->setopt(CURLOPT_POSTFIELDS, "keyreq=true"); # add POST fields
my $out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
my $sess = $response;

# --------------------------------------------------------
# STEP 2 - Build Authorization Token ...
# --------------------------------------------------------
my $auth = md5_hex("$sess|".md5_hex($password));

# --------------------------------------------------------
# STEP 3 - Request new UUID from the appliance (if creating a new
# device record. If editing an existing device
# be sure it is set in the XML ...
# --------------------------------------------------------
if ( 1 ) {
print "Using UUID From XML File: $uuid\n";
} else {
$ch->setopt(CURLOPT_POSTFIELDS,"req=newuuid&key=$auth");
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
$uuid = $response;
$data->{MachineStruct}->[0]->{MAC}->[0] = $uuid;
$data->{MachineStruct}->[0]->{NAME}->[0] = "WSAPI-" . $uuid;
print "Created New UUID: $uuid\n";
}

# convert Simple XML hash back to XML string ...
my $xml = $simple->XMLout(
$data,
KeepRoot => 1,
NoAttr => 1,
);

# --------------------------------------------------------
# STEP 4 - Send XML to the appliance ...
# --------------------------------------------------------
my @curlHeader = ("Content-Type: text/xml");
$url = "$http://$host/service/wsapi.php?req=loadxml&key=$auth&KUID=
$uuid&version=6.0";
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_HTTPHEADER, \@curlHeader);
$ch->setopt(CURLOPT_POSTFIELDS, $xml);
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " . $ch->strerror($out) . " " . $ch->errbuf . "\n");
}

print "Loaded $uuid to the appliance ($host)\n";

Valid XML schema for Windows

Files used to upload inventory information for Windows devices must conform to valid XML schemas.

The following is an example of a valid XML schema for Windows devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=">
http://www.w3.org/2001/XMLSchema-instance"
<NAME>@@__m_computerSystemName__@@</NAME>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK>@@__m_operatingSystemCsdVersion__@@</SERVICE_PACK>
<USER>@@__m_userAccountName__@@</USER>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<DOMAIN>@@__m_computerSystemDomain__@@</DOMAIN>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<OS_INSTALLED_DATE>@@__m_operatingSystemInstallDate__@@</OS_INSTALLED_DATE>
<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<LAST_SHUTDOWN>@@__m_operatingSystemLastBootupTime__@@</LAST_SHUTDOWN>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>
<SYSTEM_DIRECTORY>@@__m_operatingSystemWindowsDirectory__@@</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>@@__m_operatingSystemDescription__@@</SYSTEM_DESCRIPTION>
<RAM_TOTAL>@@__m_physicalMemoryTotalSize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_computerSystemManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL>@@__m_computerSystemModel__@@</CS_MODEL>
<CHASSIS_TYPE>@@__m_systemEnclosureChassisType__@@</CHASSIS_TYPE>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<USER_LOGGED>@@__m_computerSystemUserName__@@</USER_LOGGED>
<CS_DOMAIN>@@__m_computerSystemDomain__@@</CS_DOMAIN>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosDescription__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>@@__m_motherboardDevicePrimaryBusType__@@
</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>@@__m_motherboardDeviceSecondaryBusType__@@
</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: @@__m_processorCount__@@
CPU Core Count: @@__m_processorCoreCount__@@
@@__m_processorList__@@ </PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>@@__m_registryCurrentSize__@@</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>@@__m_registryMaximumSize__@@</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@ </DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@ </NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@ </STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@ </PROCESSES>
<NT_SERVICES>
@@__m_servicesList__@@ </NT_SERVICES>
<INSTALLED_software>
@@__m_installedProgramsList__@@ </INSTALLED_software>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
</MachineStruct>
Example using the XML schema for Windows devices

You can view an example of a file that conforms to the valid XML schema for Windows devices.

The following is an example of valid XML that uses the schema in Valid XML schema for Windows.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NAME>TestComputer</NAME>
<IP>10.10.10.10</IP>
<MAC>F1234567-C2D2-4055-85BB-294E6A3D22D9</MAC>
<OS_NAME>Microsoft Windows 7 Professional</OS_NAME>
<OS_NUMBER>6.1.7601.17514</OS_NUMBER>
<OS_MAJOR>6</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 1</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>6.1.7601</OS_VERSION>
<OS_BUILD>17514</OS_BUILD>
<OS_INSTALLED_DATE>2017-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2017-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2017-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>Windows 7 Machine</SYSTEM_DESCRIPTION>
<RAM_TOTAL>512.00MB</RAM_TOTAL>
<RAM_USED>180MB</RAM_USED>
<CS_MANUFACTURER>VMware, Inc.</CS_MANUFACTURER>
<CS_MODEL>VMware Virtual Platform</CS_MODEL>
<CHASSIS_TYPE>Other</CHASSIS_TYPE>
<USER_LOGGED>Tom</USER_LOGGED>
<CS_DOMAIN>WORK</CS_DOMAIN>
<USER_NAME>Administrator</USER_NAME>
<USER_DOMAIN>Work</USER_DOMAIN>
<BIOS_NAME>PhoenixBIOS 4.0 Release 5.5 </BIOS_NAME>
<BIOS_VERSION>INTEL - 6040000</BIOS_VERSION>
<BIOS_MANUFACTURER>Phoenix Technologies LTD</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>PhoenixBIOS 4.0 Release 5.5 </BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>VMware-56 4d bd d3 5e 4f a5 4e-6a ce a0 d3 39 bd ae 02
</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>PCI</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>ISA</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: 1
CPU Core Count: 0
CPU0: Intel Celeron processor (0 cores) </PROCESSORS>
<SOUND_DEVICES>Creative AudioPCI (ES1371,ES1373) (WDM)
</SOUND_DEVICES>
<CDROM_DEVICES>TSSTcorp DVD+-RW TS-U633F
</CDROM_DEVICES>
<VIDEO_CONTROLLERS>VMware SVGA II
</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>1MB</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>86MB</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
<DiskDrive>
<NAME>Drive C: (Physical Disk) FileSystem: NTFS Used: 2.08GB Total: 39.99GB</NAME>
<DISK_SIZE>39.9906</DISK_SIZE>
<DISK_USED>2.07966</DISK_USED>
<DISK_FREE>37.9109</DISK_FREE>
<PERCENT_USED>5.2</PERCENT_USED>
</DiskDrive>
</DISK_DRIVES>
<NETWORK_INTERFACES>
<NetworkInterface>
<NIC>AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler
Miniport</NIC>
<MAC>00:0C:29:BD:AE:03</MAC>
<IP>192.168.220.132</IP>
<DHCP_ENABLED>True</DHCP_ENABLED>
</NetworkInterface>
</NETWORK_INTERFACES>
<PRINTERS></PRINTERS>
<STARTUP_PROGRAMS>
<StartupProgram>
<NAME>desktop</NAME>
</StartupProgram>
<StartupProgram>
<NAME>VMware Tools</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareTray.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareTray.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools tray application</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
<StartupProgram>
<NAME>VMware User Process</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareUser.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareUser.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools Service</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
</STARTUP_PROGRAMS>
<PROCESSES>
<MachineProcess>
<NAME>konea.exe</NAME>
<COMMAND_EXE>C:\Program Files (x86)\Quest\KACE\konea.exe</COMMAND_EXE>
<COMMAND_ARGS/>
<FILE_INFO>
<FILE_NAME>konea.exe</FILE_NAME>
<FILE_DESCRIPTION>konea</FILE_DESCRIPTION>
<FILE_VERSION>255.239.6</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>255.239.6</PRODUCT_VERSION>
<COMPANY_NAME>Quest Software Inc.</COMPANY_NAME>
</FILE_INFO>
</MachineProcess>
</PROCESSES>
<NT_SERVICES>
<NtService>
<NAME>Alerter</NAME>
<DISPLAY_NAME>Alerter</DISPLAY_NAME>
<STATUS>SERVICE_STOPPED</STATUS>
<STARTUP_TYPE>SERVICE_DISABLED</STARTUP_TYPE>
<DESCRIPTION />
<LOGON_AS_USER>NT AUTHORITY\LocalService</LOGON_AS_USER>
<CAN_INTERACT_WITH_DESKTOP>False</CAN_INTERACT_WITH_DESKTOP>
<COMMAND_EXE>C:\WINDOWS\system32\svchost.exe</COMMAND_EXE>
<COMMAND_ARGS> -k LocalService</COMMAND_ARGS>
<FILE_INFO>
<FILE_NAME>svchost.exe</FILE_NAME>
<FILE_DESCRIPTION>Generic Host Process for Win32 Services</FILE_DESCRIPTION>
<FILE_VERSION>6.1.7600.16385 (win7_rtm.090713-1255)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>6.1.7600.16385</PRODUCT_VERSION>
<COMPANY_NAME>Microsoft Corporation</COMPANY_NAME>
</FILE_INFO>
</NtService>
</NT_SERVICES>
<INSTALLED_software>
<software>
<DISPLAY_VERSION>5.2.38916</DISPLAY_VERSION>
<HELP_LINK />
<README />
<INSTALL_DATE>20170830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>8.0.xxxxx</CLIENT_VERSION>
</MachineStruct>
Valid XML schema for Linux and Mac devices

Files used to upload inventory information for Linux and Mac devices must use valid XML schemas.

The following is an example of an XML schema for Linux and Mac devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct>
<NAME>@@__m_versionHostName__@@</NAME>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK></SERVICE_PACK>
<INSTALL_DATE></INSTALL_DATE>

<OS_ARCH>@@__m_operatingSystemOSArchitecture__@@</OS_ARCH>
<OS_FAMILY>@@__m_operatingSystemOSFamily__@@</OS_FAMILY>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<DOMAIN>@@__m_userAccountDomain__@@</DOMAIN>
<CS_DOMAIN>@@__m_userAccountDomain__@@</CS_DOMAIN>

<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>

<RAM_TOTAL>@@__m_operatingSystemTotalVisibleMemorySize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_biosManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL></CS_MODEL>
<USER_LOGGED>@@__m_userAccountName__@@</USER_LOGGED>
<USER>@@__m_userAccountName__@@</USER>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosName__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS></MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS></MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>@@__m_processorList__@@</PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<MONITOR>@@__m_desktopMonitorDescription__@@</MONITOR>

<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@</DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@</NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@</STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@</PROCESSES>
<INSTALLED_software>
@@__m_installedProgramsList__@@</INSTALLED_software>
</MachineStruct>
Upload an XML file using the Administrator Console

You can upload an XML file that contains device inventory information using the Administrator Console. This type of information is referred to as manual inventory information.

The KACE Agent is installed on the device that is having its inventory information added.

You create the XML file on the device to be inventoried, then move to the appliance to upload the file.

Manual inventory information appears on the Software page but it does not appear on the Software Catalog page. See:

Windows 32-bit systems: C:\Program Files\Quest\KACE
Windows 64-bit systems: C:\Program Files (x86)\Quest\KACE
Mac OS X systems: /Library/Application Support/Quest/KACE/bin
Linux systems: /opt/quest/kace/bin

Where filename is the path to the XML file you want to create. If the path contains spaces, enclose the entire path in double quotation marks.

The Agent collects the inventory data and generates the XML file.

2.
On the appliance Administrator Console, go to the Devices list:
a.
Log in to the appliance Administrator Console, https://appliance_hostname/admin. Or, if the Show organization menu in admin header option is enabled in the appliance General Settings, select an organization in the drop-down list in the top-right corner of the page next to the login information.
b.
On the left navigation bar, click Inventory, then click Devices.
3.
Select Choose Action > New > Manual Device to display the Device Detail page.
4.
Under Import Device, click Browse.
5.
6.
Click Save.

The device's information is added to inventory. If you uploaded an XML file, the appliance ignores all other information on the page and uses the XML file for inventory information.

Valid XML schema for Linux and Mac devices

Adding devices manually using the API

You can add devices to the appliance manually by creating an XML file and uploading that file to the appliance using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the KACE Agent for security reasons, and devices that cannot connect to the LAN (Local Area Network) to report inventory.

The XML file you create can be modeled on the sample script in this section.

Devices that are added to inventory through the API do not count toward the license limit. See View product licensing information.

Application inventory that is uploaded through the API is displayed on the Software page, but it is not displayed on the Software Catalog page. See:

NOTE: The inventory API supports HTTP and HTTPS communications, depending on your appliance configuration. To upload inventory information, use the following URL: http://appliance_hostname/service/wsapi.php, where appliance_hostname is the host name of your appliance.
Submit inventory information using the API

To submit inventory using the API, you first need to generate an XML file that contains the inventory information.

For examples, see:

After you generate an XML file with the expected content, you can submit inventory using the API.

Submit keyreq=true in the body of the request to get a session string in response.
a.
Construct the auth string as:
b.
Run MD5 on the auth string.
Submit req=newuuid&key=$auth in the body of the request to get a UUID in response.

Submit req=loadxml&key=$auth&KUID=$uuid&version=6.0 in the GET line and inventory XML in the body of the request.

See Sample Perl script.

Sample Perl script

You can use Perl scripts to upload XML files with device inventory information to the appliance.

The following is a sample Perl script that uploads a user-created XML file to the appliance. For information about using this script, contact Quest Support at https://support.quest.com/contact-support.


#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
use XML::Simple;
use Data::Dumper;
use Digest::MD5 qw(md5 md5_hex md5_base64);

# Curl Output Handler ...
my $response;
sub write_data($$$$) {
$response = shift;
return length($response);
}

# -----------------------------------------------------
# Appliance Configuration ...
# -----------------------------------------------------
my $password = "xxx"; # password set in Settings -> Security Settings
my $host = "hostname"; # hostname or IP address here
my $http = "https"; # HTTP or HTTPS

# --------------------------------------------------------
# Build XML Package ...
# --------------------------------------------------------
my $simple = new XML::Simple(keeproot => 1, forcearray => 1);
my $data = $simple->XMLin("machine.xml");
my $uuid = $data->{MachineStruct}->[0]->{MAC}->[0];

# --------------------------------------------------------
# Setup CURL stuff ...
# --------------------------------------------------------
my $url = "$http://$host/service/wsapi.php";
my $ch = WWW::Curl::Easy->new;
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_SSL_VERIFYPEER, 0); # ok for self-signed ca
$ch->setopt(CURLOPT_VERBOSE, 0);
$ch->setopt(CURLOPT_WRITEFUNCTION, \&write_data); # return into a variable
$ch->setopt(CURLOPT_HEADER, 0);
$ch->setopt(CURLOPT_TIMEOUT, 40); # times out after 4s
$ch->setopt(CURLOPT_POST, 1);
$ch->setopt(CURLOPT_COOKIEFILE, '/tmp/cookiefile.txt');

# --------------------------------------------------------
# STEP 1 - Request Session from the appliance ...
# --------------------------------------------------------
$ch->setopt(CURLOPT_POSTFIELDS, "keyreq=true"); # add POST fields
my $out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
my $sess = $response;

# --------------------------------------------------------
# STEP 2 - Build Authorization Token ...
# --------------------------------------------------------
my $auth = md5_hex("$sess|".md5_hex($password));

# --------------------------------------------------------
# STEP 3 - Request new UUID from the appliance (if creating a new
# device record. If editing an existing device
# be sure it is set in the XML ...
# --------------------------------------------------------
if ( 1 ) {
print "Using UUID From XML File: $uuid\n";
} else {
$ch->setopt(CURLOPT_POSTFIELDS,"req=newuuid&key=$auth");
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
$uuid = $response;
$data->{MachineStruct}->[0]->{MAC}->[0] = $uuid;
$data->{MachineStruct}->[0]->{NAME}->[0] = "WSAPI-" . $uuid;
print "Created New UUID: $uuid\n";
}

# convert Simple XML hash back to XML string ...
my $xml = $simple->XMLout(
$data,
KeepRoot => 1,
NoAttr => 1,
);

# --------------------------------------------------------
# STEP 4 - Send XML to the appliance ...
# --------------------------------------------------------
my @curlHeader = ("Content-Type: text/xml");
$url = "$http://$host/service/wsapi.php?req=loadxml&key=$auth&KUID=
$uuid&version=6.0";
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_HTTPHEADER, \@curlHeader);
$ch->setopt(CURLOPT_POSTFIELDS, $xml);
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " . $ch->strerror($out) . " " . $ch->errbuf . "\n");
}

print "Loaded $uuid to the appliance ($host)\n";

Valid XML schema for Windows

Files used to upload inventory information for Windows devices must conform to valid XML schemas.

The following is an example of a valid XML schema for Windows devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=">
http://www.w3.org/2001/XMLSchema-instance"
<NAME>@@__m_computerSystemName__@@</NAME>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK>@@__m_operatingSystemCsdVersion__@@</SERVICE_PACK>
<USER>@@__m_userAccountName__@@</USER>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<DOMAIN>@@__m_computerSystemDomain__@@</DOMAIN>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<OS_INSTALLED_DATE>@@__m_operatingSystemInstallDate__@@</OS_INSTALLED_DATE>
<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<LAST_SHUTDOWN>@@__m_operatingSystemLastBootupTime__@@</LAST_SHUTDOWN>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>
<SYSTEM_DIRECTORY>@@__m_operatingSystemWindowsDirectory__@@</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>@@__m_operatingSystemDescription__@@</SYSTEM_DESCRIPTION>
<RAM_TOTAL>@@__m_physicalMemoryTotalSize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_computerSystemManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL>@@__m_computerSystemModel__@@</CS_MODEL>
<CHASSIS_TYPE>@@__m_systemEnclosureChassisType__@@</CHASSIS_TYPE>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<USER_LOGGED>@@__m_computerSystemUserName__@@</USER_LOGGED>
<CS_DOMAIN>@@__m_computerSystemDomain__@@</CS_DOMAIN>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosDescription__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>@@__m_motherboardDevicePrimaryBusType__@@
</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>@@__m_motherboardDeviceSecondaryBusType__@@
</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: @@__m_processorCount__@@
CPU Core Count: @@__m_processorCoreCount__@@
@@__m_processorList__@@ </PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>@@__m_registryCurrentSize__@@</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>@@__m_registryMaximumSize__@@</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@ </DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@ </NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@ </STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@ </PROCESSES>
<NT_SERVICES>
@@__m_servicesList__@@ </NT_SERVICES>
<INSTALLED_software>
@@__m_installedProgramsList__@@ </INSTALLED_software>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
</MachineStruct>
Example using the XML schema for Windows devices

You can view an example of a file that conforms to the valid XML schema for Windows devices.

The following is an example of valid XML that uses the schema in Valid XML schema for Windows.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NAME>TestComputer</NAME>
<IP>10.10.10.10</IP>
<MAC>F1234567-C2D2-4055-85BB-294E6A3D22D9</MAC>
<OS_NAME>Microsoft Windows 7 Professional</OS_NAME>
<OS_NUMBER>6.1.7601.17514</OS_NUMBER>
<OS_MAJOR>6</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 1</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>6.1.7601</OS_VERSION>
<OS_BUILD>17514</OS_BUILD>
<OS_INSTALLED_DATE>2017-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2017-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2017-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>Windows 7 Machine</SYSTEM_DESCRIPTION>
<RAM_TOTAL>512.00MB</RAM_TOTAL>
<RAM_USED>180MB</RAM_USED>
<CS_MANUFACTURER>VMware, Inc.</CS_MANUFACTURER>
<CS_MODEL>VMware Virtual Platform</CS_MODEL>
<CHASSIS_TYPE>Other</CHASSIS_TYPE>
<USER_LOGGED>Tom</USER_LOGGED>
<CS_DOMAIN>WORK</CS_DOMAIN>
<USER_NAME>Administrator</USER_NAME>
<USER_DOMAIN>Work</USER_DOMAIN>
<BIOS_NAME>PhoenixBIOS 4.0 Release 5.5 </BIOS_NAME>
<BIOS_VERSION>INTEL - 6040000</BIOS_VERSION>
<BIOS_MANUFACTURER>Phoenix Technologies LTD</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>PhoenixBIOS 4.0 Release 5.5 </BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>VMware-56 4d bd d3 5e 4f a5 4e-6a ce a0 d3 39 bd ae 02
</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>PCI</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>ISA</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: 1
CPU Core Count: 0
CPU0: Intel Celeron processor (0 cores) </PROCESSORS>
<SOUND_DEVICES>Creative AudioPCI (ES1371,ES1373) (WDM)
</SOUND_DEVICES>
<CDROM_DEVICES>TSSTcorp DVD+-RW TS-U633F
</CDROM_DEVICES>
<VIDEO_CONTROLLERS>VMware SVGA II
</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>1MB</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>86MB</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
<DiskDrive>
<NAME>Drive C: (Physical Disk) FileSystem: NTFS Used: 2.08GB Total: 39.99GB</NAME>
<DISK_SIZE>39.9906</DISK_SIZE>
<DISK_USED>2.07966</DISK_USED>
<DISK_FREE>37.9109</DISK_FREE>
<PERCENT_USED>5.2</PERCENT_USED>
</DiskDrive>
</DISK_DRIVES>
<NETWORK_INTERFACES>
<NetworkInterface>
<NIC>AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler
Miniport</NIC>
<MAC>00:0C:29:BD:AE:03</MAC>
<IP>192.168.220.132</IP>
<DHCP_ENABLED>True</DHCP_ENABLED>
</NetworkInterface>
</NETWORK_INTERFACES>
<PRINTERS></PRINTERS>
<STARTUP_PROGRAMS>
<StartupProgram>
<NAME>desktop</NAME>
</StartupProgram>
<StartupProgram>
<NAME>VMware Tools</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareTray.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareTray.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools tray application</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
<StartupProgram>
<NAME>VMware User Process</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareUser.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareUser.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools Service</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
</STARTUP_PROGRAMS>
<PROCESSES>
<MachineProcess>
<NAME>konea.exe</NAME>
<COMMAND_EXE>C:\Program Files (x86)\Quest\KACE\konea.exe</COMMAND_EXE>
<COMMAND_ARGS/>
<FILE_INFO>
<FILE_NAME>konea.exe</FILE_NAME>
<FILE_DESCRIPTION>konea</FILE_DESCRIPTION>
<FILE_VERSION>255.239.6</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>255.239.6</PRODUCT_VERSION>
<COMPANY_NAME>Quest Software Inc.</COMPANY_NAME>
</FILE_INFO>
</MachineProcess>
</PROCESSES>
<NT_SERVICES>
<NtService>
<NAME>Alerter</NAME>
<DISPLAY_NAME>Alerter</DISPLAY_NAME>
<STATUS>SERVICE_STOPPED</STATUS>
<STARTUP_TYPE>SERVICE_DISABLED</STARTUP_TYPE>
<DESCRIPTION />
<LOGON_AS_USER>NT AUTHORITY\LocalService</LOGON_AS_USER>
<CAN_INTERACT_WITH_DESKTOP>False</CAN_INTERACT_WITH_DESKTOP>
<COMMAND_EXE>C:\WINDOWS\system32\svchost.exe</COMMAND_EXE>
<COMMAND_ARGS> -k LocalService</COMMAND_ARGS>
<FILE_INFO>
<FILE_NAME>svchost.exe</FILE_NAME>
<FILE_DESCRIPTION>Generic Host Process for Win32 Services</FILE_DESCRIPTION>
<FILE_VERSION>6.1.7600.16385 (win7_rtm.090713-1255)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>6.1.7600.16385</PRODUCT_VERSION>
<COMPANY_NAME>Microsoft Corporation</COMPANY_NAME>
</FILE_INFO>
</NtService>
</NT_SERVICES>
<INSTALLED_software>
<software>
<DISPLAY_VERSION>5.2.38916</DISPLAY_VERSION>
<HELP_LINK />
<README />
<INSTALL_DATE>20170830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>8.0.xxxxx</CLIENT_VERSION>
</MachineStruct>
Valid XML schema for Linux and Mac devices

Files used to upload inventory information for Linux and Mac devices must use valid XML schemas.

The following is an example of an XML schema for Linux and Mac devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct>
<NAME>@@__m_versionHostName__@@</NAME>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK></SERVICE_PACK>
<INSTALL_DATE></INSTALL_DATE>

<OS_ARCH>@@__m_operatingSystemOSArchitecture__@@</OS_ARCH>
<OS_FAMILY>@@__m_operatingSystemOSFamily__@@</OS_FAMILY>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<DOMAIN>@@__m_userAccountDomain__@@</DOMAIN>
<CS_DOMAIN>@@__m_userAccountDomain__@@</CS_DOMAIN>

<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>

<RAM_TOTAL>@@__m_operatingSystemTotalVisibleMemorySize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_biosManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL></CS_MODEL>
<USER_LOGGED>@@__m_userAccountName__@@</USER_LOGGED>
<USER>@@__m_userAccountName__@@</USER>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosName__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS></MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS></MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>@@__m_processorList__@@</PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<MONITOR>@@__m_desktopMonitorDescription__@@</MONITOR>

<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@</DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@</NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@</STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@</PROCESSES>
<INSTALLED_software>
@@__m_installedProgramsList__@@</INSTALLED_software>
</MachineStruct>
Upload an XML file using the Administrator Console

You can upload an XML file that contains device inventory information using the Administrator Console. This type of information is referred to as manual inventory information.

The KACE Agent is installed on the device that is having its inventory information added.

You create the XML file on the device to be inventoried, then move to the appliance to upload the file.

Manual inventory information appears on the Software page but it does not appear on the Software Catalog page. See:

Windows 32-bit systems: C:\Program Files\Quest\KACE
Windows 64-bit systems: C:\Program Files (x86)\Quest\KACE
Mac OS X systems: /Library/Application Support/Quest/KACE/bin
Linux systems: /opt/quest/kace/bin

Where filename is the path to the XML file you want to create. If the path contains spaces, enclose the entire path in double quotation marks.

The Agent collects the inventory data and generates the XML file.

2.
On the appliance Administrator Console, go to the Devices list:
a.
Log in to the appliance Administrator Console, https://appliance_hostname/admin. Or, if the Show organization menu in admin header option is enabled in the appliance General Settings, select an organization in the drop-down list in the top-right corner of the page next to the login information.
b.
On the left navigation bar, click Inventory, then click Devices.
3.
Select Choose Action > New > Manual Device to display the Device Detail page.
4.
Under Import Device, click Browse.
5.
6.
Click Save.

The device's information is added to inventory. If you uploaded an XML file, the appliance ignores all other information on the page and uses the XML file for inventory information.

Upload an XML file using the Administrator Console

Adding devices manually using the API

You can add devices to the appliance manually by creating an XML file and uploading that file to the appliance using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the KACE Agent for security reasons, and devices that cannot connect to the LAN (Local Area Network) to report inventory.

The XML file you create can be modeled on the sample script in this section.

Devices that are added to inventory through the API do not count toward the license limit. See View product licensing information.

Application inventory that is uploaded through the API is displayed on the Software page, but it is not displayed on the Software Catalog page. See:

NOTE: The inventory API supports HTTP and HTTPS communications, depending on your appliance configuration. To upload inventory information, use the following URL: http://appliance_hostname/service/wsapi.php, where appliance_hostname is the host name of your appliance.
Submit inventory information using the API

To submit inventory using the API, you first need to generate an XML file that contains the inventory information.

For examples, see:

After you generate an XML file with the expected content, you can submit inventory using the API.

Submit keyreq=true in the body of the request to get a session string in response.
a.
Construct the auth string as:
b.
Run MD5 on the auth string.
Submit req=newuuid&key=$auth in the body of the request to get a UUID in response.

Submit req=loadxml&key=$auth&KUID=$uuid&version=6.0 in the GET line and inventory XML in the body of the request.

See Sample Perl script.

Sample Perl script

You can use Perl scripts to upload XML files with device inventory information to the appliance.

The following is a sample Perl script that uploads a user-created XML file to the appliance. For information about using this script, contact Quest Support at https://support.quest.com/contact-support.


#!/usr/bin/perl
use strict;
use warnings;
use WWW::Curl::Easy;
use XML::Simple;
use Data::Dumper;
use Digest::MD5 qw(md5 md5_hex md5_base64);

# Curl Output Handler ...
my $response;
sub write_data($$$$) {
$response = shift;
return length($response);
}

# -----------------------------------------------------
# Appliance Configuration ...
# -----------------------------------------------------
my $password = "xxx"; # password set in Settings -> Security Settings
my $host = "hostname"; # hostname or IP address here
my $http = "https"; # HTTP or HTTPS

# --------------------------------------------------------
# Build XML Package ...
# --------------------------------------------------------
my $simple = new XML::Simple(keeproot => 1, forcearray => 1);
my $data = $simple->XMLin("machine.xml");
my $uuid = $data->{MachineStruct}->[0]->{MAC}->[0];

# --------------------------------------------------------
# Setup CURL stuff ...
# --------------------------------------------------------
my $url = "$http://$host/service/wsapi.php";
my $ch = WWW::Curl::Easy->new;
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_SSL_VERIFYPEER, 0); # ok for self-signed ca
$ch->setopt(CURLOPT_VERBOSE, 0);
$ch->setopt(CURLOPT_WRITEFUNCTION, \&write_data); # return into a variable
$ch->setopt(CURLOPT_HEADER, 0);
$ch->setopt(CURLOPT_TIMEOUT, 40); # times out after 4s
$ch->setopt(CURLOPT_POST, 1);
$ch->setopt(CURLOPT_COOKIEFILE, '/tmp/cookiefile.txt');

# --------------------------------------------------------
# STEP 1 - Request Session from the appliance ...
# --------------------------------------------------------
$ch->setopt(CURLOPT_POSTFIELDS, "keyreq=true"); # add POST fields
my $out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
my $sess = $response;

# --------------------------------------------------------
# STEP 2 - Build Authorization Token ...
# --------------------------------------------------------
my $auth = md5_hex("$sess|".md5_hex($password));

# --------------------------------------------------------
# STEP 3 - Request new UUID from the appliance (if creating a new
# device record. If editing an existing device
# be sure it is set in the XML ...
# --------------------------------------------------------
if ( 1 ) {
print "Using UUID From XML File: $uuid\n";
} else {
$ch->setopt(CURLOPT_POSTFIELDS,"req=newuuid&key=$auth");
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " .
$ch->strerror($out) .
" " .
$ch->errbuf . "\n");
}
$uuid = $response;
$data->{MachineStruct}->[0]->{MAC}->[0] = $uuid;
$data->{MachineStruct}->[0]->{NAME}->[0] = "WSAPI-" . $uuid;
print "Created New UUID: $uuid\n";
}

# convert Simple XML hash back to XML string ...
my $xml = $simple->XMLout(
$data,
KeepRoot => 1,
NoAttr => 1,
);

# --------------------------------------------------------
# STEP 4 - Send XML to the appliance ...
# --------------------------------------------------------
my @curlHeader = ("Content-Type: text/xml");
$url = "$http://$host/service/wsapi.php?req=loadxml&key=$auth&KUID=
$uuid&version=6.0";
$ch->setopt(CURLOPT_URL, $url); # set url to post to
$ch->setopt(CURLOPT_HTTPHEADER, \@curlHeader);
$ch->setopt(CURLOPT_POSTFIELDS, $xml);
$out = $ch->perform;
if ( $out != 0 ) {
die ("Error: $out " . $ch->strerror($out) . " " . $ch->errbuf . "\n");
}

print "Loaded $uuid to the appliance ($host)\n";

Valid XML schema for Windows

Files used to upload inventory information for Windows devices must conform to valid XML schemas.

The following is an example of a valid XML schema for Windows devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=">
http://www.w3.org/2001/XMLSchema-instance"
<NAME>@@__m_computerSystemName__@@</NAME>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK>@@__m_operatingSystemCsdVersion__@@</SERVICE_PACK>
<USER>@@__m_userAccountName__@@</USER>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<DOMAIN>@@__m_computerSystemDomain__@@</DOMAIN>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<OS_INSTALLED_DATE>@@__m_operatingSystemInstallDate__@@</OS_INSTALLED_DATE>
<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<LAST_SHUTDOWN>@@__m_operatingSystemLastBootupTime__@@</LAST_SHUTDOWN>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>
<SYSTEM_DIRECTORY>@@__m_operatingSystemWindowsDirectory__@@</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>@@__m_operatingSystemDescription__@@</SYSTEM_DESCRIPTION>
<RAM_TOTAL>@@__m_physicalMemoryTotalSize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_computerSystemManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL>@@__m_computerSystemModel__@@</CS_MODEL>
<CHASSIS_TYPE>@@__m_systemEnclosureChassisType__@@</CHASSIS_TYPE>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<USER_LOGGED>@@__m_computerSystemUserName__@@</USER_LOGGED>
<CS_DOMAIN>@@__m_computerSystemDomain__@@</CS_DOMAIN>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosDescription__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>@@__m_motherboardDevicePrimaryBusType__@@
</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>@@__m_motherboardDeviceSecondaryBusType__@@
</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: @@__m_processorCount__@@
CPU Core Count: @@__m_processorCoreCount__@@
@@__m_processorList__@@ </PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>@@__m_registryCurrentSize__@@</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>@@__m_registryMaximumSize__@@</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@ </DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@ </NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@ </STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@ </PROCESSES>
<NT_SERVICES>
@@__m_servicesList__@@ </NT_SERVICES>
<INSTALLED_software>
@@__m_installedProgramsList__@@ </INSTALLED_software>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
</MachineStruct>
Example using the XML schema for Windows devices

You can view an example of a file that conforms to the valid XML schema for Windows devices.

The following is an example of valid XML that uses the schema in Valid XML schema for Windows.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NAME>TestComputer</NAME>
<IP>10.10.10.10</IP>
<MAC>F1234567-C2D2-4055-85BB-294E6A3D22D9</MAC>
<OS_NAME>Microsoft Windows 7 Professional</OS_NAME>
<OS_NUMBER>6.1.7601.17514</OS_NUMBER>
<OS_MAJOR>6</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 1</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>6.1.7601</OS_VERSION>
<OS_BUILD>17514</OS_BUILD>
<OS_INSTALLED_DATE>2017-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2017-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2017-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>Windows 7 Machine</SYSTEM_DESCRIPTION>
<RAM_TOTAL>512.00MB</RAM_TOTAL>
<RAM_USED>180MB</RAM_USED>
<CS_MANUFACTURER>VMware, Inc.</CS_MANUFACTURER>
<CS_MODEL>VMware Virtual Platform</CS_MODEL>
<CHASSIS_TYPE>Other</CHASSIS_TYPE>
<USER_LOGGED>Tom</USER_LOGGED>
<CS_DOMAIN>WORK</CS_DOMAIN>
<USER_NAME>Administrator</USER_NAME>
<USER_DOMAIN>Work</USER_DOMAIN>
<BIOS_NAME>PhoenixBIOS 4.0 Release 5.5 </BIOS_NAME>
<BIOS_VERSION>INTEL - 6040000</BIOS_VERSION>
<BIOS_MANUFACTURER>Phoenix Technologies LTD</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>PhoenixBIOS 4.0 Release 5.5 </BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>VMware-56 4d bd d3 5e 4f a5 4e-6a ce a0 d3 39 bd ae 02
</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS>PCI</MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS>ISA</MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>CPU Chip Count: 1
CPU Core Count: 0
CPU0: Intel Celeron processor (0 cores) </PROCESSORS>
<SOUND_DEVICES>Creative AudioPCI (ES1371,ES1373) (WDM)
</SOUND_DEVICES>
<CDROM_DEVICES>TSSTcorp DVD+-RW TS-U633F
</CDROM_DEVICES>
<VIDEO_CONTROLLERS>VMware SVGA II
</VIDEO_CONTROLLERS>
<REGISTRY_SIZE>1MB</REGISTRY_SIZE>
<REGISTRY_MAX_SIZE>86MB</REGISTRY_MAX_SIZE>
<DISK_DRIVES>
<DiskDrive>
<NAME>Drive C: (Physical Disk) FileSystem: NTFS Used: 2.08GB Total: 39.99GB</NAME>
<DISK_SIZE>39.9906</DISK_SIZE>
<DISK_USED>2.07966</DISK_USED>
<DISK_FREE>37.9109</DISK_FREE>
<PERCENT_USED>5.2</PERCENT_USED>
</DiskDrive>
</DISK_DRIVES>
<NETWORK_INTERFACES>
<NetworkInterface>
<NIC>AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler
Miniport</NIC>
<MAC>00:0C:29:BD:AE:03</MAC>
<IP>192.168.220.132</IP>
<DHCP_ENABLED>True</DHCP_ENABLED>
</NetworkInterface>
</NETWORK_INTERFACES>
<PRINTERS></PRINTERS>
<STARTUP_PROGRAMS>
<StartupProgram>
<NAME>desktop</NAME>
</StartupProgram>
<StartupProgram>
<NAME>VMware Tools</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareTray.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareTray.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools tray application</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
<StartupProgram>
<NAME>VMware User Process</NAME>
<COMMAND_EXE>C:\Program Files\VMware\VMware Tools\VMwareUser.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>VMwareUser.exe</FILE_NAME>
<FILE_DESCRIPTION>VMware Tools Service</FILE_DESCRIPTION>
<FILE_VERSION>8.4.6.16648</FILE_VERSION>
<PRODUCT_NAME>VMware Tools</PRODUCT_NAME>
<PRODUCT_VERSION>8.4.6 build-385536</PRODUCT_VERSION>
<COMPANY_NAME>VMware, Inc.</COMPANY_NAME>
</FILE_INFO>
</StartupProgram>
</STARTUP_PROGRAMS>
<PROCESSES>
<MachineProcess>
<NAME>konea.exe</NAME>
<COMMAND_EXE>C:\Program Files (x86)\Quest\KACE\konea.exe</COMMAND_EXE>
<COMMAND_ARGS/>
<FILE_INFO>
<FILE_NAME>konea.exe</FILE_NAME>
<FILE_DESCRIPTION>konea</FILE_DESCRIPTION>
<FILE_VERSION>255.239.6</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>255.239.6</PRODUCT_VERSION>
<COMPANY_NAME>Quest Software Inc.</COMPANY_NAME>
</FILE_INFO>
</MachineProcess>
</PROCESSES>
<NT_SERVICES>
<NtService>
<NAME>Alerter</NAME>
<DISPLAY_NAME>Alerter</DISPLAY_NAME>
<STATUS>SERVICE_STOPPED</STATUS>
<STARTUP_TYPE>SERVICE_DISABLED</STARTUP_TYPE>
<DESCRIPTION />
<LOGON_AS_USER>NT AUTHORITY\LocalService</LOGON_AS_USER>
<CAN_INTERACT_WITH_DESKTOP>False</CAN_INTERACT_WITH_DESKTOP>
<COMMAND_EXE>C:\WINDOWS\system32\svchost.exe</COMMAND_EXE>
<COMMAND_ARGS> -k LocalService</COMMAND_ARGS>
<FILE_INFO>
<FILE_NAME>svchost.exe</FILE_NAME>
<FILE_DESCRIPTION>Generic Host Process for Win32 Services</FILE_DESCRIPTION>
<FILE_VERSION>6.1.7600.16385 (win7_rtm.090713-1255)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>6.1.7600.16385</PRODUCT_VERSION>
<COMPANY_NAME>Microsoft Corporation</COMPANY_NAME>
</FILE_INFO>
</NtService>
</NT_SERVICES>
<INSTALLED_software>
<software>
<DISPLAY_VERSION>5.2.38916</DISPLAY_VERSION>
<HELP_LINK />
<README />
<INSTALL_DATE>20170830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>8.0.xxxxx</CLIENT_VERSION>
</MachineStruct>
Valid XML schema for Linux and Mac devices

Files used to upload inventory information for Linux and Mac devices must use valid XML schemas.

The following is an example of an XML schema for Linux and Mac devices.


<?xml version="1.0" encoding="utf-8"?>
<MachineStruct>
<NAME>@@__m_versionHostName__@@</NAME>
<CLIENT_VERSION>@@__m_appVersion__@@</CLIENT_VERSION>
<IP>@@__m_IPAddress__@@</IP>
<MAC>@@__m_versionKaceId__@@</MAC>
<OS_NAME>@@__m_operatingSystemCaption__@@</OS_NAME>
<OS_NUMBER>@@__m_operatingSystemVersion__@@</OS_NUMBER>
<OS_MAJOR>@@__m_operatingSystemVersionMajor__@@</OS_MAJOR>
<OS_MINOR>@@__m_operatingSystemVersionMinor__@@</OS_MINOR>
<SERVICE_PACK></SERVICE_PACK>
<INSTALL_DATE></INSTALL_DATE>

<OS_ARCH>@@__m_operatingSystemOSArchitecture__@@</OS_ARCH>
<OS_FAMILY>@@__m_operatingSystemOSFamily__@@</OS_FAMILY>
<OS_VERSION>@@__m_operatingSystemVersion__@@</OS_VERSION>
<OS_BUILD>@@__m_operatingSystemBuildNumber__@@</OS_BUILD>
<DOMAIN>@@__m_userAccountDomain__@@</DOMAIN>
<CS_DOMAIN>@@__m_userAccountDomain__@@</CS_DOMAIN>

<LAST_REBOOT>@@__m_operatingSystemLastBootupTime__@@</LAST_REBOOT>
<TZ_AGENT>@@__m_versionTimeZone__@@</TZ_AGENT>
<UPTIME>@@__m_operatingSystemUptime__@@</UPTIME>

<RAM_TOTAL>@@__m_operatingSystemTotalVisibleMemorySize__@@</RAM_TOTAL>
<RAM_USED>@@__m_operatingSystemUsedPhysicalMemory__@@</RAM_USED>
<CS_MANUFACTURER>@@__m_biosManufacturer__@@</CS_MANUFACTURER>
<CS_MODEL></CS_MODEL>
<USER_LOGGED>@@__m_userAccountName__@@</USER_LOGGED>
<USER>@@__m_userAccountName__@@</USER>
<USER_NAME>@@__m_userAccountName__@@</USER_NAME>
<USER_FULLNAME>@@__m_userAccountFullName__@@</USER_FULLNAME>
<USER_DOMAIN>@@__m_userAccountDomain__@@</USER_DOMAIN>
<BIOS_NAME>@@__m_biosName__@@</BIOS_NAME>
<BIOS_VERSION>@@__m_biosVersion__@@</BIOS_VERSION>
<BIOS_MANUFACTURER>@@__m_biosManufacturer__@@</BIOS_MANUFACTURER>
<BIOS_DESCRIPTION>@@__m_biosName__@@</BIOS_DESCRIPTION>
<BIOS_SERIAL_NUMBER>@@__m_biosSerialNumber__@@</BIOS_SERIAL_NUMBER>
<MOTHERBOARD_PRIMARY_BUS></MOTHERBOARD_PRIMARY_BUS>
<MOTHERBOARD_SECONDARY_BUS></MOTHERBOARD_SECONDARY_BUS>
<PROCESSORS>@@__m_processorList__@@</PROCESSORS>
<SOUND_DEVICES>@@__m_soundDeviceDescription__@@</SOUND_DEVICES>
<CDROM_DEVICES>@@__m_CDROMDeviceName__@@</CDROM_DEVICES>
<MONITOR>@@__m_desktopMonitorDescription__@@</MONITOR>

<VIDEO_CONTROLLERS>@@__m_videoControllerName__@@</VIDEO_CONTROLLERS>
<DISK_DRIVES>
@@__m_logicalDiskDriveList__@@</DISK_DRIVES>
<NETWORK_INTERFACES>
@@__m_networkAdapterConfigurationList__@@</NETWORK_INTERFACES>
<PRINTERS>@@__m_printerList__@@</PRINTERS>
<STARTUP_PROGRAMS>
@@__m_startupProgramsList__@@</STARTUP_PROGRAMS>
<PROCESSES>
@@__m_processList__@@</PROCESSES>
<INSTALLED_software>
@@__m_installedProgramsList__@@</INSTALLED_software>
</MachineStruct>
Upload an XML file using the Administrator Console

You can upload an XML file that contains device inventory information using the Administrator Console. This type of information is referred to as manual inventory information.

The KACE Agent is installed on the device that is having its inventory information added.

You create the XML file on the device to be inventoried, then move to the appliance to upload the file.

Manual inventory information appears on the Software page but it does not appear on the Software Catalog page. See:

Windows 32-bit systems: C:\Program Files\Quest\KACE
Windows 64-bit systems: C:\Program Files (x86)\Quest\KACE
Mac OS X systems: /Library/Application Support/Quest/KACE/bin
Linux systems: /opt/quest/kace/bin

Where filename is the path to the XML file you want to create. If the path contains spaces, enclose the entire path in double quotation marks.

The Agent collects the inventory data and generates the XML file.

2.
On the appliance Administrator Console, go to the Devices list:
a.
Log in to the appliance Administrator Console, https://appliance_hostname/admin. Or, if the Show organization menu in admin header option is enabled in the appliance General Settings, select an organization in the drop-down list in the top-right corner of the page next to the login information.
b.
On the left navigation bar, click Inventory, then click Devices.
3.
Select Choose Action > New > Manual Device to display the Device Detail page.
4.
Under Import Device, click Browse.
5.
6.
Click Save.

The device's information is added to inventory. If you uploaded an XML file, the appliance ignores all other information on the page and uses the XML file for inventory information.

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating