Chat now with support
Chat with Support

KACE as a Service 7.1 - Administrator Guide

About the KACE Systems Management Appliance (K1000) 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 Verifying port settings, NTP service, and website access Configuring network and security settings Configuring Agent settings Configuring session timeout and auto-refresh settings Configuring locale settings 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
Setting up and using labels to manage groups of items Configuring user accounts, LDAP authentication, and SSO Using Replication Shares Managing credentials Configuring assets
About the Asset Management component 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
Setting up License Compliance Managing License Compliance Setting up Service Desk Creating and managing organizations Importing and exporting appliance resources
Managing inventory
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 Provisioning the K1000 Agent Manually deploying the K1000 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 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 Managing Mac profiles
Patching devices and maintaining security
About patch management Subscribing to and downloading patches Creating and managing patch schedules Managing patch inventory Managing Dell devices and updates Maintaining device and appliance security
Using reports and scheduling notifications Monitoring servers
Getting started with server monitoring Working with monitoring profiles Managing monitoring for devices Working with alerts
Using the Service Desk
Configuring Service Desk 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 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 K1000
Appendixes Glossary About us Legal notices

Adding devices manually using the API

Adding devices manually using the API

You can add devices to the K1000 manually by creating an XML file and uploading that file to the K1000 using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the K1000 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 K1000 appliance license limit. See View K1000 license 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:

Enable inventory API access

API inventory access enables you to upload inventory data using the API. This access is useful if you want to import inventory information from devices that do not have the K1000 Agent installed.

1.
Go to the appliance Control Panel:
If the Organization component is enabled on the appliance, log in to the K1000 System Administration Console, http://K1000_hostname/system, or select System in the drop-down list in the top-right corner of the page, then click Settings.
2.
Click Security Settings to display the Security Settings page.
3.
Select Enable Inventory API access.
4.
In the API password field, enter the password you want to use for API access.
5.
Click Save.

After the appliance restarts, you can use external API commands to upload inventory information.

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 K1000. 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);
}

# -----------------------------------------------------
# K1000 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 K1000 ...
# --------------------------------------------------------
$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 K1000 (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 K1000 ...
# --------------------------------------------------------
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 K1000 ($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 XP Professional</OS_NAME>
<OS_NUMBER>5.1.2600</OS_NUMBER>
<OS_MAJOR>5</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 2</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>5.1.2600</OS_VERSION>
<OS_BUILD>2600</OS_BUILD>
<OS_INSTALLED_DATE>2011-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2011-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2011-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>XP 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>AMPAgent.exe</NAME>
<COMMAND_EXE>C:\Program Files\Dell\KACE\AMPAgent.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>AMPAgent.exe</FILE_NAME>
<FILE_DESCRIPTION>AMP Service</FILE_DESCRIPTION>
<FILE_VERSION>5.2.38916</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>5.2.38916</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>5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>5.1.2600.2180</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>20110830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>6.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 K1000 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 K1000 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\Dell\KACE
Windows 64-bit systems: C:\Program Files (x86)\Dell\KACE
Mac OS X systems: /Library/Application Support/Dell/KACE/bin
Linux systems: /opt/dell/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 K1000 Administrator Console, go to the Devices list:
a.
Log in to the K1000 Administrator Console, http://K1000_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.
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.

Enable inventory API access

Adding devices manually using the API

You can add devices to the K1000 manually by creating an XML file and uploading that file to the K1000 using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the K1000 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 K1000 appliance license limit. See View K1000 license 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:

Enable inventory API access

API inventory access enables you to upload inventory data using the API. This access is useful if you want to import inventory information from devices that do not have the K1000 Agent installed.

1.
Go to the appliance Control Panel:
If the Organization component is enabled on the appliance, log in to the K1000 System Administration Console, http://K1000_hostname/system, or select System in the drop-down list in the top-right corner of the page, then click Settings.
2.
Click Security Settings to display the Security Settings page.
3.
Select Enable Inventory API access.
4.
In the API password field, enter the password you want to use for API access.
5.
Click Save.

After the appliance restarts, you can use external API commands to upload inventory information.

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 K1000. 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);
}

# -----------------------------------------------------
# K1000 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 K1000 ...
# --------------------------------------------------------
$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 K1000 (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 K1000 ...
# --------------------------------------------------------
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 K1000 ($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 XP Professional</OS_NAME>
<OS_NUMBER>5.1.2600</OS_NUMBER>
<OS_MAJOR>5</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 2</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>5.1.2600</OS_VERSION>
<OS_BUILD>2600</OS_BUILD>
<OS_INSTALLED_DATE>2011-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2011-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2011-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>XP 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>AMPAgent.exe</NAME>
<COMMAND_EXE>C:\Program Files\Dell\KACE\AMPAgent.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>AMPAgent.exe</FILE_NAME>
<FILE_DESCRIPTION>AMP Service</FILE_DESCRIPTION>
<FILE_VERSION>5.2.38916</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>5.2.38916</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>5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>5.1.2600.2180</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>20110830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>6.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 K1000 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 K1000 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\Dell\KACE
Windows 64-bit systems: C:\Program Files (x86)\Dell\KACE
Mac OS X systems: /Library/Application Support/Dell/KACE/bin
Linux systems: /opt/dell/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 K1000 Administrator Console, go to the Devices list:
a.
Log in to the K1000 Administrator Console, http://K1000_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.
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.

Submit inventory information using the API

Adding devices manually using the API

You can add devices to the K1000 manually by creating an XML file and uploading that file to the K1000 using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the K1000 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 K1000 appliance license limit. See View K1000 license 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:

Enable inventory API access

API inventory access enables you to upload inventory data using the API. This access is useful if you want to import inventory information from devices that do not have the K1000 Agent installed.

1.
Go to the appliance Control Panel:
If the Organization component is enabled on the appliance, log in to the K1000 System Administration Console, http://K1000_hostname/system, or select System in the drop-down list in the top-right corner of the page, then click Settings.
2.
Click Security Settings to display the Security Settings page.
3.
Select Enable Inventory API access.
4.
In the API password field, enter the password you want to use for API access.
5.
Click Save.

After the appliance restarts, you can use external API commands to upload inventory information.

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 K1000. 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);
}

# -----------------------------------------------------
# K1000 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 K1000 ...
# --------------------------------------------------------
$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 K1000 (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 K1000 ...
# --------------------------------------------------------
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 K1000 ($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 XP Professional</OS_NAME>
<OS_NUMBER>5.1.2600</OS_NUMBER>
<OS_MAJOR>5</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 2</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>5.1.2600</OS_VERSION>
<OS_BUILD>2600</OS_BUILD>
<OS_INSTALLED_DATE>2011-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2011-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2011-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>XP 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>AMPAgent.exe</NAME>
<COMMAND_EXE>C:\Program Files\Dell\KACE\AMPAgent.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>AMPAgent.exe</FILE_NAME>
<FILE_DESCRIPTION>AMP Service</FILE_DESCRIPTION>
<FILE_VERSION>5.2.38916</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>5.2.38916</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>5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>5.1.2600.2180</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>20110830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>6.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 K1000 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 K1000 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\Dell\KACE
Windows 64-bit systems: C:\Program Files (x86)\Dell\KACE
Mac OS X systems: /Library/Application Support/Dell/KACE/bin
Linux systems: /opt/dell/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 K1000 Administrator Console, go to the Devices list:
a.
Log in to the K1000 Administrator Console, http://K1000_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.
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.

Sample Perl script

Adding devices manually using the API

You can add devices to the K1000 manually by creating an XML file and uploading that file to the K1000 using the API (application programming interface). Adding devices in this way is useful for devices that might not be able to run the K1000 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 K1000 appliance license limit. See View K1000 license 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:

Enable inventory API access

API inventory access enables you to upload inventory data using the API. This access is useful if you want to import inventory information from devices that do not have the K1000 Agent installed.

1.
Go to the appliance Control Panel:
If the Organization component is enabled on the appliance, log in to the K1000 System Administration Console, http://K1000_hostname/system, or select System in the drop-down list in the top-right corner of the page, then click Settings.
2.
Click Security Settings to display the Security Settings page.
3.
Select Enable Inventory API access.
4.
In the API password field, enter the password you want to use for API access.
5.
Click Save.

After the appliance restarts, you can use external API commands to upload inventory information.

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 K1000. 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);
}

# -----------------------------------------------------
# K1000 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 K1000 ...
# --------------------------------------------------------
$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 K1000 (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 K1000 ...
# --------------------------------------------------------
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 K1000 ($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 XP Professional</OS_NAME>
<OS_NUMBER>5.1.2600</OS_NUMBER>
<OS_MAJOR>5</OS_MAJOR>
<OS_MINOR>1</OS_MINOR>
<SERVICE_PACK>Service Pack 2</SERVICE_PACK>
<USER>Administrator</USER>
<USER_FULLNAME>Tom Silver</USER_FULLNAME>
<DOMAIN>WORK</DOMAIN>
<OS_VERSION>5.1.2600</OS_VERSION>
<OS_BUILD>2600</OS_BUILD>
<OS_INSTALLED_DATE>2011-08-30 14:22:39 -0400</OS_INSTALLED_DATE>
<LAST_REBOOT>2011-08-30 14:25:05 -0400</LAST_REBOOT>
<LAST_SHUTDOWN>2011-08-30 14:25:05 -0400</LAST_SHUTDOWN>
<UPTIME>4 days </UPTIME>
<SYSTEM_DIRECTORY>C:\WINDOWS</SYSTEM_DIRECTORY>
<SYSTEM_DESCRIPTION>XP 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>AMPAgent.exe</NAME>
<COMMAND_EXE>C:\Program Files\Dell\KACE\AMPAgent.exe</COMMAND_EXE>
<COMMAND_ARGS />
<FILE_INFO>
<FILE_NAME>AMPAgent.exe</FILE_NAME>
<FILE_DESCRIPTION>AMP Service</FILE_DESCRIPTION>
<FILE_VERSION>5.2.38916</FILE_VERSION>
<PRODUCT_NAME>KACE Agent</PRODUCT_NAME>
<PRODUCT_VERSION>5.2.38916</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>5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)</FILE_VERSION>
<PRODUCT_NAME>Microsoft® Windows® Operating System</PRODUCT_NAME>
<PRODUCT_VERSION>5.1.2600.2180</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>20110830</INSTALL_DATE>
<PUBLISHER>Quest Software Inc.</PUBLISHER>
<UNINSTALL_STRING />
<URLINFO_ABOUT />
<DISPLAY_NAME>Quest KACE Agent</DISPLAY_NAME>
</software>
</INSTALLED_software>
<CLIENT_VERSION>6.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 K1000 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 K1000 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\Dell\KACE
Windows 64-bit systems: C:\Program Files (x86)\Dell\KACE
Mac OS X systems: /Library/Application Support/Dell/KACE/bin
Linux systems: /opt/dell/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 K1000 Administrator Console, go to the Devices list:
a.
Log in to the K1000 Administrator Console, http://K1000_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.
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