Recentelijk was ik op bezoek bij één van onze MSP partners. De manager Operations vroeg me of we een rapportage konden opleveren over het aantal Standaard requests dat met ons Self-service platform was afgehandeld de afgelopen maand. Mijn antwoord daarop was natuurlijk… “Dat kun je zelf opvragen!”.

Provisior kent uitgebreide rapportagemogelijkheden Zo zijn er diverse standaardrapportages beschikbaar op gebied van o.a. auditlog, toegekende rechten en applicaties, uitgegeven softwarelicenties, etc. Een aantal rapportages worden ook periodiek naar verantwoordelijke medewerkers gestuurd, zoals een overzicht van gebruikersaccounts en autorisaties naar afdelingsmanagers.

Het feit dat Provisior een generiek Automation platform biedt maakt de mogelijkheden eindeloos, ook op gebied van rapportages. Om terug te keren naar het begin… Het volgende wat ik hem vertelde was “Maar we kunnen ook eenvoudig zorgen dat je die specifieke rapportage één keer per maand in je mailbox ontvangt…” Je kunt je voorstellen dat hij daar nog enthousiaster van werd.

Hieronder zal ik een korte beschrijving geven van hoe we dit met een stukje PowerShell hebben aangepakt.

Middels Invoke-WebRequest vragen we de webpagina op, waarin de gewenste rapportage is opgenomen:

    $reportURL = "https://provisior/.../Requests.aspx"
    $response = Invoke-WebRequest -Uri $reportURL -SessionVariable session -Method Post -UseDefaultCredentials

Vervolgens vullen we een aantal velden in, zodat we in onze rapportage enkel resultaten van de vorige maand terugkrijgen. Hier een code snippet als voorbeeld:

    $currentDate = Get-Date 
    $reportMonthFirst = Get-Date $currentDate.AddMonths(-1) -Day 1
    $reportMonthLast = $reportMonthFirst.AddMonths(1).AddDays(-1)

    $response.Forms[0].Fields['startDate']=$reportMonthFirst.ToString("yyyy-MM-dd")
    $response.Forms[0].Fields['endDate']=$reportMonthLast.ToString("yyyy-MM-dd")

In de volgende stap versturen we het formulier middels een nieuwe aanroep van Invoke-WebRequest en schrijven het resultaat (een Excel-document in dit geval) naar het filesysteem:

    $reportURL = $reportURL + $response.Action
    $response = Invoke-WebRequest -Uri $reportURL -WebSession $session -Method Post -Body $response -UseDefaultCredentials
    [System.IO.File]::WriteAllBytes($reportFile, $response.content)

Als laatste bouwen we een e-mail op en versturen deze met Send-MailMessage:

    Send-MailMessage -From $from -To $recipients -Subject $subject -Body $body -BodyAsHtml -Attachments $reportFile -SmtpServer $SMTPserver

Zo eenvoudig is het. Door dit stukje script op te nemen in Provisior en dit periodiek uit te laten voeren ontvangt onze partner nu elke maand de rapportage in Excel in zijn eigen mailbox.

Heb je na het lezen van dit artikel zelf een mooi voorbeeld van een stukje automation of zou je graag meer toelichting willen op dit praktijkvoorbeeld? Stuur me een bericht via e-mail of LinkedIn.

[icegram campaigns=”594″]

Stefan Krul-Donkersloot

Stefan Krul-Donkersloot

Senior Consultant