This guide explains how to manage Cisco Unified Communication System (version 11.5.x), with PowerShell. Retrieving backup status is the concrete example:
- Monitoring Microsoft 365 with SCOM and the NiCE Active 365 Management Pack - Tue, Feb 7 2023
- SCOM.Addons.MailIn: Monitor anything that can send email with SCOM - Mon, May 25 2020
- Display a user’s logged-on computer in Active Directory Users and Computers (ADUC) - Mon, Jan 21 2019
- CallManager
- Instant Messaging & Presence (IM & P)
- Call Center Express (CCX)
- Cisco Unity Connection (CUC)
- Telepresence Management Suite (TMS)
Except for ‘TMS’ all are configured to store backups on a Network Directory:
The backup jobs create several *.tar files; here just for the ‘UCM’ component:
CISCO is provides the Platform Administrative Web Services as interface to communicate with their system.
The API reference explores that the backup status is available through the ‘Maintenance Service’.
A SOAP envelope* needs to be formulated to get the information.
<?xml version='1.0' encoding='UTF-8'?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="server_url"> <soap:Header/> <soap:Body> <ser:getBackupProgress xmlns:ns="server_url"/> </soap:Body> </soap:Envelope>
The lines above are only a part of required code. Missing is the correct web addressing.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.api.platform.vos.cisco.com"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action>urn:getAPIVersion</wsa:Action> <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>uuid:26634481-3273-4a70-b537-ab4b874e4d6b</wsa:MessageID> <wsa:To/> </soapenv:Header> <soapenv:Body> <ser:getAPIVersion/> </soapenv:Body> </soapenv:Envelope>
The final envelope looks like this:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://services.api.platform.vos.cisco.com"> <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action>urn:getBackupProgress</wsa:Action> <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>uuid:dc75e529-34fb-4009-b594-d801ec86f39e</wsa:MessageID> </soap:Header> <soap:Body> <ser:getBackupProgress/> </soap:Body> </soap:Envelope>
PowerShell offers the Invoke-Webrequest cmdlet to pass SOAP envelopes to a Web-Service.
Important here is to formulate the correct header. The following works:
"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($ciscoUser+":"+$ciscoPwd))
The complete code to get the backup status :
$serverURL = 'https://srvauc521/platform-services/services/MaintenanceService?wsdl' $soapRequest = [xml]@" <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://services.api.platform.vos.cisco.com"> <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action>urn:getBackupProgress</wsa:Action> <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>uuid:dc75e529-34fb-4009-b594-d801ec86f39e</wsa:MessageID> </soap:Header> <soap:Body> <ser:getBackupProgress/> </soap:Body> </soap:Envelope> "@ $header = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($ciscoUser+":"+$ciscoPwd))} $result = Invoke-WebRequest -Uri $serverURL -Headers $header -Method:Post -Body $soapRequest -ContentType "application/soap+xml" -usebasicparsing [xml]$SOAP = $result.Content $xmlResult = $SOAP.Envelope.Body.getBackupProgressResponse.return.backupProgressResult.componentList
The content of $xmlResult variable is a plain text array which can be easily further processed
CDR_CAR SRVVAUC520 CAR SUCCESS Tue Aug 22 01:03:08 CEST 2017 activelog/platform/drf/log/2017-08-22-01-00-06_b_SRVvauc520_cdr_car_car.log UCM SRVVAUC520 PLATFORM SUCCESS Tue Aug 22 01:04:52 CEST 2017 activelog/platform/drf/log/2017-08-22-01-00-06_b_SRVvauc520_ucm_platform.log UCM SRVVAUC520 CLM SUCCESS Tue Aug 22 01:04:54 CEST 2017 activelog/platform/drf/log/2017-08-22-01-00-06_b_SRVvauc520_ucm_clm.log …
Worth to note is that the backup status overall can be queried separately via:
$backupOverallStatus = $SOAP.Envelope.Body.getBackupProgressResponse.return.backupProgressResult.status if ($backupOverallStatus -notmatch 'SUCCESS') { $foo = ‘send success mail for instance …’ }
You can learn more about SOAP here.
Subscribe to 4sysops newsletter!
More about Cisco's PAWS there
Ruben thanks a lot for posting in the wiki! The text looks great. I just made some minor edits. I changed the introduction a little because a wiki is supposed to be collaboration platform where multiple authors contribute to a document. This is also the reason why I changed the access setting to “logged-in users can edit.”
You can review my changes in the history tab.
You received 400 Member Points for creating this wiki doc.
Based on your suggestions I updated again.
Thanks Michael, appreciated 🙂
Thanks for updating the doc! It earned you another 20 Member Points! You are now on position 3 in our monthly member competition. Keep it up. 😉