PowerShell Script for Sending Email via API
Hi,
I defined a custom trigger to be executed when a request
from a specific service category has been approved. Basically, a Powershell
script which accepts a json file as parameter is executed. The Powershell
scripts then takes the WorkOrderId from the json file and passes this to a
crystal report as a parameter. The crystal report then passes this parameter to
a SQL command (stored procedure) to get corresponding values for the WorkOrder.(This is all happening).
The report that is then generated is meant to be sent as an
email attachment to the Helpdesk administrator.(This is not happening).
Where can I be going wrong. Below is the Powershell script:
- param (
- [string]$json = "none"
- )
- [reflection.assembly]::LoadWithPartialName('CrystalDecisions.Shared')
- [reflection.assembly]::LoadWithPartialName('CrystalDecisions.CrystalReports.Engine')
- $obj= Get-Content $json |ConvertFrom-Json
- $approval_status=$obj.request.APPROVAL_STATUS
- if ($approval_status -eq 'Approved'){
- $workorderid = $obj.request.WORKORDERID
- $template_name=$obj.request.REQUESTTEMPLATE
- $work_order_type=$obj.request."Request Type"
- $pdftk = "C:\Program Files (x86)\PDFtk\bin\pdftk.exe"
- $sdphost = "http://myserver:myport/"
- $techkey = "XXXXXXXXXXXXXXXXXXXXXXXXXX"
- $url = $sdphost + "sdpapi/request/" + $workorderid
- $method = "POST"
- $operation = "REPLY_REQUEST"
- if (($template_name -eq "SAP Roles and System Configuration" ) -and $work_order_type -in ('Application for SAP UserID and Roles','Application for SAP Additional Roles','Application For Changes To SAP Configuration or Request For SAP Reports'))
- {
- $absent_email=$obj.request.resource."Details of Person who will be Absent".Email
- $from_date=$obj.request.'From date'
- $to_date=$obj.request.'To date'
- $requester=$obj.request.REQUESTER
- $subject =$obj.request.SUBJECT
- $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
- if($work_order_type -eq 'Application for SAP Additional Roles'){
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\AdditionalRoles2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- }
- if ($work_order_type -eq "Application for SAP UserID and Roles")
- {
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\UserIDAndRoles2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- }
- elseif ($work_order_type -eq 'Application For Changes To SAP Configuration or Request For SAP Reports'){
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\SAPConfigChanges2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- $to = "myemail@mycompany.com"
- $attachments=$report_file
- $From = "someemail@mycompany.com"
- $Body = "<h1>Please find attached approved SAP request</h1><br><br>"
- $inputdata = @"
- {
- "operation": {
- "details": {
- "to": "$to",
- "subject": "$subject",
- "description": "$Body",
- "attachments": "$attachments"
- }
- }
- }
- "@
- $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
- $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
- $response
- if ($absent_email.length -gt 0){
- $to = $absent_email
- $From = "someemail@mycompany.com"
- $subject="Acting Notification"
- $Body = "<h1>A request by $($requester) to act on your behalf from $($from_date) to $($to_date) to has been approved.</h1><br><br>"
- $inputdata = @"
- {
- "operation": {
- "details": {
- "to": "$to",
- "subject": "$subject",
- "description": "$Body",
- }
- }
- }
- "@
- $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
- $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
- $response
- }
- $report.close()
- }
- elseif(($template_name -eq "SAP Roles and System Configuration" ) -and $work_order_type -eq 'Application For Role Approver In GRC Access Control')
- {
- $requester=$obj.request.REQUESTER
- $subject =$obj.request.SUBJECT
- $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\GRCRoleApprover2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- $to = "myemail@mycompany.com"
- $attachments=$report_file
- $From = "someemail@mycompany.com"
- $Body = "<h1>Please find attached approved Application For Change Of Role Approver In GRC </h1>"
- $inputdata = @"
- {
- "operation": {
- "details": {
- "to": "$to",
- "subject": "$subject",
- "description": "$Body",
- "attachments": "$attachments"
- }
- }
- }
- "@
- $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
- $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
- $response
- }
- }
- elseif($template_name -eq "SAP User Not On Leave Confirmation" )
- {
- $requester=$obj.request.REQUESTER
- $subject =$obj.request.SUBJECT
- $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\UserNotOnLeave2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- $to = "myemail@mycompany.com"
- $attachments=$report_file
- $From = "someemail@mycompany.com"
- $Body = "<h1>Please find attached approved User Not Leave Confirmation </h1>"
- $inputdata = @"
- {
- "operation": {
- "details": {
- "to": "$to",
- "subject": "$subject",
- "description": "$Body",
- "attachments": "$attachments"
- }
- }
- }
- "@
- $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
- $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
- $response
- }
- elseif($template_name -eq "SAP BI Access" )
- {
- $requester=$obj.request.REQUESTER
- $subject =$obj.request.SUBJECT
- $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
- $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\BIAccess2.rpt")
- $report.SetDatabaseLogon('report_user','report_user_pswd')
- $report.SetParameterValue('req_id',$workorderid)
- $report_file="E:\Reqs\"+$workorderid+".pdf"
- $report.ExportToDisk("PortableDocFormat", $report_file)
- $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"
- & $pdftk $report_file cat 1 output $output_file
- $report_file=$output_file
- $to = "myemail@mycompany.com"
- $attachments=$report_file
- $From = "someemail@mycompany.com"
- $Body = "Please find attached approved SAP BI Access request."
- $inputdata = @"
- {
- "operation": {
- "details": {
- "to": "$to",
- "subject": "$subject",
- "description": "$Body",
- "attachments": "$attachments"
- }
- }
- }
- "@
- $params =@{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
- $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
- $response
- }
- }
New to ADSelfService Plus?