PowerShell Script for Sending Email via API

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:

  1. param (
  2.     [string]$json = "none"
  3. )
  4. [reflection.assembly]::LoadWithPartialName('CrystalDecisions.Shared')

  5. [reflection.assembly]::LoadWithPartialName('CrystalDecisions.CrystalReports.Engine')

  6. $obj= Get-Content $json |ConvertFrom-Json

  7. $approval_status=$obj.request.APPROVAL_STATUS
  8. if ($approval_status -eq 'Approved'){


  9. $workorderid = $obj.request.WORKORDERID   
  10. $template_name=$obj.request.REQUESTTEMPLATE
  11. $work_order_type=$obj.request."Request Type"

  12. $pdftk = "C:\Program Files (x86)\PDFtk\bin\pdftk.exe"

  13. $sdphost = "http://myserver:myport/"
  14. $techkey = "XXXXXXXXXXXXXXXXXXXXXXXXXX"


  15. $url = $sdphost + "sdpapi/request/" + $workorderid
  16. $method = "POST"
  17. $operation = "REPLY_REQUEST"



  18. 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'))
  19. {

  20. $absent_email=$obj.request.resource."Details of Person who will be Absent".Email

  21. $from_date=$obj.request.'From date'
  22. $to_date=$obj.request.'To date'
  23. $requester=$obj.request.REQUESTER
  24. $subject =$obj.request.SUBJECT
  25. $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
  26. if($work_order_type -eq 'Application for SAP Additional Roles'){
  27. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\AdditionalRoles2.rpt")
  28. $report.SetDatabaseLogon('report_user','report_user_pswd')

  29. $report.SetParameterValue('req_id',$workorderid)
  30. $report_file="E:\Reqs\"+$workorderid+".pdf"


  31. $report.ExportToDisk("PortableDocFormat", $report_file)
  32. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"

  33. & $pdftk $report_file cat 1 output $output_file

  34. $report_file=$output_file


  35. }

  36. if ($work_order_type -eq "Application for SAP UserID and Roles")

  37. {
  38. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\UserIDAndRoles2.rpt")
  39. $report.SetDatabaseLogon('report_user','report_user_pswd')

  40. $report.SetParameterValue('req_id',$workorderid)
  41. $report_file="E:\Reqs\"+$workorderid+".pdf"


  42. $report.ExportToDisk("PortableDocFormat", $report_file)

  43. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"

  44. & $pdftk $report_file cat 1 output $output_file

  45. $report_file=$output_file


  46. }
  47. elseif ($work_order_type -eq 'Application For Changes To SAP Configuration or Request For SAP Reports'){
  48. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\SAPConfigChanges2.rpt")
  49. $report.SetDatabaseLogon('report_user','report_user_pswd')

  50. $report.SetParameterValue('req_id',$workorderid)
  51. $report_file="E:\Reqs\"+$workorderid+".pdf"


  52. $report.ExportToDisk("PortableDocFormat", $report_file)
  53. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"



  54. & $pdftk $report_file cat 1 output $output_file

  55. $report_file=$output_file

  56. $to = "myemail@mycompany.com"
  57. $attachments=$report_file
  58. $From = "someemail@mycompany.com"


  59. $Body = "<h1>Please find attached approved SAP request</h1><br><br>"

  60. $inputdata = @"
  61. {
  62. "operation": {
  63. "details": {
  64. "to": "$to",
  65. "subject": "$subject",
  66. "description": "$Body",
  67. "attachments": "$attachments"
  68. }
  69. }
  70. }
  71. "@
  72. $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}


  73. $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
  74. $response

  75. if ($absent_email.length -gt 0){
  76. $to = $absent_email
  77. $From = "someemail@mycompany.com"
  78. $subject="Acting Notification"
  79. $Body = "<h1>A request by $($requester) to act on your behalf from $($from_date) to $($to_date) to has been approved.</h1><br><br>"


  80. $inputdata = @"
  81. {
  82. "operation": {
  83. "details": {
  84. "to": "$to",
  85. "subject": "$subject",
  86. "description": "$Body",

  87. }
  88. }
  89. }
  90. "@
  91. $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}

  92. $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
  93. $response
  94. }
  95. $report.close()

  96. }

  97. elseif(($template_name -eq "SAP Roles and System Configuration" ) -and $work_order_type -eq 'Application For Role Approver In GRC Access Control')
  98. {
  99. $requester=$obj.request.REQUESTER
  100. $subject =$obj.request.SUBJECT
  101. $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
  102. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\GRCRoleApprover2.rpt")
  103. $report.SetDatabaseLogon('report_user','report_user_pswd')

  104. $report.SetParameterValue('req_id',$workorderid)
  105. $report_file="E:\Reqs\"+$workorderid+".pdf"


  106. $report.ExportToDisk("PortableDocFormat", $report_file)

  107. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"

  108. & $pdftk $report_file cat 1 output $output_file

  109. $report_file=$output_file

  110. $to = "myemail@mycompany.com"
  111. $attachments=$report_file
  112. $From = "someemail@mycompany.com"


  113. $Body = "<h1>Please find attached approved Application For Change Of Role Approver In GRC </h1>"


  114. $inputdata = @"
  115. {
  116. "operation": {
  117. "details": {
  118. "to": "$to",
  119. "subject": "$subject",
  120. "description": "$Body",
  121. "attachments": "$attachments"
  122. }
  123. }
  124. }
  125. "@
  126. $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}


  127. $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
  128. $response
  129. }
  130. }

  131. elseif($template_name -eq "SAP User Not On Leave Confirmation" )
  132. {
  133. $requester=$obj.request.REQUESTER
  134. $subject =$obj.request.SUBJECT
  135. $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
  136. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\UserNotOnLeave2.rpt")
  137. $report.SetDatabaseLogon('report_user','report_user_pswd')

  138. $report.SetParameterValue('req_id',$workorderid)
  139. $report_file="E:\Reqs\"+$workorderid+".pdf"


  140. $report.ExportToDisk("PortableDocFormat", $report_file)
  141. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"

  142. & $pdftk $report_file cat 1 output $output_file

  143. $report_file=$output_file

  144. $to = "myemail@mycompany.com"
  145. $attachments=$report_file
  146. $From = "someemail@mycompany.com"


  147. $Body = "<h1>Please find attached approved User Not Leave Confirmation </h1>"

  148. $inputdata = @"
  149. {
  150. "operation": {
  151. "details": {
  152. "to": "$to",
  153. "subject": "$subject",
  154. "description": "$Body",
  155. "attachments": "$attachments"
  156. }
  157. }
  158. }
  159. "@
  160. $params = @{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
  161. $response = Invoke-WebRequest -Uri $url -Method POST -Body $params -OutFile "\request\Ticket.json"
  162. $response
  163. }
  164. elseif($template_name -eq "SAP BI Access" )
  165. {

  166. $requester=$obj.request.REQUESTER
  167. $subject =$obj.request.SUBJECT


  168. $report = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument
  169. $report.Load("C:\ManageEngine\ServiceDesk\integration\custom_scripts\BIAccess2.rpt")
  170. $report.SetDatabaseLogon('report_user','report_user_pswd')

  171. $report.SetParameterValue('req_id',$workorderid)
  172. $report_file="E:\Reqs\"+$workorderid+".pdf"


  173. $report.ExportToDisk("PortableDocFormat", $report_file)

  174. $output_file="E:\Reqs\FormattedReqs\"+$workorderid+".pdf"


  175. & $pdftk $report_file cat 1 output $output_file


  176. $report_file=$output_file
  177. $to = "myemail@mycompany.com"
  178. $attachments=$report_file
  179. $From = "someemail@mycompany.com"


  180. $Body = "Please find attached approved SAP BI Access request."


  181. $inputdata = @"
  182. {
  183. "operation": {
  184. "details": {
  185. "to": "$to",
  186. "subject": "$subject",
  187. "description": "$Body",
  188. "attachments": "$attachments"
  189. }
  190. }
  191. }
  192. "@

  193. $params =@{INPUT_DATA=$inputdata;OPERATION_NAME=$operation;TECHNICIAN_KEY=$techkey;format='json'}
  194. $response = Invoke-WebRequest -Uri $url -Method POST -Body $params  -OutFile "\request\Ticket.json"
  195. $response
  196. }

  197. }







                  New to ADSelfService Plus?