Symantec Management Platform (SMP) Community

 View Only

SMP - ASDK - Web Service - Report With Parameter 

Jul 11, 2019 11:44 AM

There's times you wish to get data from the SMP but don't have access to the DB.

Instead you could create a Report that contains this data then use the Report Management Web Services to retrieve this data.

One extra option to make the Report more useful is to add parameters so you can pre-filter the data.

 

I've created a simple report that returns the UserGuid based on a username search.

 

SELECT 
  [Guid] AS [UserGuid] 
FROM 
  [vUser]
WHERE 
  Name LIKE '%' + '%UserName%' + '%'

 

 

We can use the ReportManagement WebService to achieve this.

  • http://localhost/altiris/asdk.ns/ReportManagementService.asmx?op=RunReportWithParameters

 

 

Parameter Value
reportItemGuid  
nameValuePairs  

You can see the SOAP request on the webpage

POST /altiris/asdk.ns/ReportManagementService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://Altiris.ASDK.NS.com/RunReportWithParameters"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <RunReportWithParameters xmlns="http://Altiris.ASDK.NS.com">
      <reportItemGuid>string</reportItemGuid>
      <nameValuePairs>string</nameValuePairs>
    </RunReportWithParameters>
  </soap:Body>
</soap:Envelope>

Response

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

 

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <RunReportWithParametersResponse xmlns="http://Altiris.ASDK.NS.com">
      <RunReportWithParametersResult>xml</RunReportWithParametersResult>
    </RunReportWithParametersResponse>
  </soap:Body>
</soap:Envelope>

 

 

If you are on the  SMP server you can test it out.

Get the ReportGuid from your Report Report.

Then we need a "Name Value Pair" of our input:

UserName=Alex.Hedley

 

Output

<?xml version="1.0" encoding="UTF-8"?>
<NewDataSet>
    <xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns="" id="NewDataSet">
        <xs:element msdata:UseCurrentLocale="true" msdata:IsDataSet="true" name="NewDataSet">
            <xs:complexType>-                <xs:choice maxOccurs="unbounded" minOccurs="0">
                    <xs:element name="Table">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="UserGuid" minOccurs="0" type="xs:string" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:choice>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    <Table>
        <UserGuid>23f904fe-a273-47e1-a48f-2cf08aa6bbc3</UserGuid>
    </Table>
</NewDataSet>

As you can see we get a Table that contains the Rows brought back from the SQL we wrote above.

<Table>
    <UserGuid>23f904fe-a273-47e1-a48f-2cf08aa6bbc3</UserGuid>
</Table>

Now create a script to get this data remotely, lets use PowerShell

Replace the ## with the values you'd need.

$smpServer = "#SERVERNAME#"
$UserName = "#USERNAME#"

$reportItemGuid = '#00000000-0000-0000-0000-000000000000#' #UserInfo
$params = "UserName=$UserName"

$where = "http://$smpServer/altiris/asdk.ns/ReportManagementService.asmx"
            
$ws = New-WebServiceProxy -uri $where -UseDefaultCredential

$wsResult = $ws.RunReportWithParameters($reportItemGuid, $params)
if ($wsResult.Errors.length -gt 0){
    $result = $wsResult.Errors[0]
}
else
{     
    $result = $wsResult.Table
}
$result

And then the output

UserGuid                            
--------                            
00000000-0000-0000-0000-000000000000

And now we have a way to get data from Altiris with any inputs we need.

Statistics
0 Favorited
5 Views
0 Files
0 Shares
0 Downloads

Tags and Keywords

Related Entries and Links

No Related Resource entered.