This script is ideal for IT administrators oย who need to:
- Notify individuals when equipment is returned.
- Include details of the returned hardware in an email for acknowledgment or record-keeping.
- Ensure emails are sent with consistent formatting and proper validation.
With this script, tasks that would typically require manual email composition are automated, saving time and ensuring accuracy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
#Simple Form to Construct Equipment Return Draft E-mail version 1. ELAU # Load Outlook Interop Assembly Add-Type -AssemblyName “Microsoft.Office.Interop.Outlook” # Initialize global equipment list $global:equipmentList = @() # Function to create the form function Create-Form { $form = New-Object System.Windows.Forms.Form $form.Text = “Equipment Return Form” $form.Size = New-Object System.Drawing.Size(700, 750) $form.StartPosition = “CenterScreen” # Labels and fields $labelTo = New-Object System.Windows.Forms.Label $labelTo.Text = “To (Email):” $labelTo.AutoSize = $true $labelTo.Location = New-Object System.Drawing.Point(10, 20) $form.Controls.Add($labelTo) $textBoxTo = New-Object System.Windows.Forms.TextBox $textBoxTo.Location = New-Object System.Drawing.Point(200, 20) $textBoxTo.Size = New-Object System.Drawing.Size(450, 30) $form.Controls.Add($textBoxTo) $labelReturningPerson = New-Object System.Windows.Forms.Label $labelReturningPerson.Text = “Returning Person:” $labelReturningPerson.AutoSize = $true $labelReturningPerson.Location = New-Object System.Drawing.Point(10, 70) $form.Controls.Add($labelReturningPerson) $textBoxReturningPerson = New-Object System.Windows.Forms.TextBox $textBoxReturningPerson.Location = New-Object System.Drawing.Point(200, 70) $textBoxReturningPerson.Size = New-Object System.Drawing.Size(450, 30) $form.Controls.Add($textBoxReturningPerson) $labelAssignedPerson = New-Object System.Windows.Forms.Label $labelAssignedPerson.Text = “Assigned Person:” $labelAssignedPerson.AutoSize = $true $labelAssignedPerson.Location = New-Object System.Drawing.Point(10, 120) $form.Controls.Add($labelAssignedPerson) $textBoxAssignedPerson = New-Object System.Windows.Forms.TextBox $textBoxAssignedPerson.Location = New-Object System.Drawing.Point(200, 120) $textBoxAssignedPerson.Size = New-Object System.Drawing.Size(450, 30) $form.Controls.Add($textBoxAssignedPerson) $labelRequest = New-Object System.Windows.Forms.Label $labelRequest.Text = “Request#:” $labelRequest.AutoSize = $true $labelRequest.Location = New-Object System.Drawing.Point(10, 170) $form.Controls.Add($labelRequest) $textBoxRequest = New-Object System.Windows.Forms.TextBox $textBoxRequest.Location = New-Object System.Drawing.Point(200, 170) $textBoxRequest.Size = New-Object System.Drawing.Size(450, 30) $form.Controls.Add($textBoxRequest) # Equipment List Section $labelEquipment = New-Object System.Windows.Forms.Label $labelEquipment.Text = “Equipment Details:” $labelEquipment.AutoSize = $true $labelEquipment.Location = New-Object System.Drawing.Point(10, 220) $form.Controls.Add($labelEquipment) $listView = New-Object System.Windows.Forms.ListView $listView.Location = New-Object System.Drawing.Point(10, 250) $listView.Size = New-Object System.Drawing.Size(660, 300) $listView.View = ‘Details’ $listView.FullRowSelect = $true $listView.GridLines = $true $listView.Columns.Add(“Device Type”, 150) $listView.Columns.Add(“Make/Model”, 200) $listView.Columns.Add(“Serial Number”, 150) $listView.Columns.Add(“Asset Tag”, 100) $form.Controls.Add($listView) # Buttons $addButton = New-Object System.Windows.Forms.Button $addButton.Text = “Add” $addButton.Location = New-Object System.Drawing.Point(10, 570) $addButton.Size = New-Object System.Drawing.Size(100, 40) $form.Controls.Add($addButton) $removeButton = New-Object System.Windows.Forms.Button $removeButton.Text = “Remove” $removeButton.Location = New-Object System.Drawing.Point(120, 570) $removeButton.Size = New-Object System.Drawing.Size(100, 40) $form.Controls.Add($removeButton) $sendButton = New-Object System.Windows.Forms.Button $sendButton.Text = “Send” $sendButton.Location = New-Object System.Drawing.Point(230, 570) $sendButton.Size = New-Object System.Drawing.Size(100, 40) $form.Controls.Add($sendButton) # Add Equipment Handler $addButton.Add_Click({ $inputForm = New-Object System.Windows.Forms.Form $inputForm.Text = “Add Equipment” $inputForm.Size = New-Object System.Drawing.Size(400, 300) $inputForm.StartPosition = “CenterScreen” $labels = @(“Device Type”, “Make/Model”, “Serial Number”, “Asset Tag”) $textBoxes = @() for ($i = 0; $i -lt $labels.Count; $i++) { $label = New-Object System.Windows.Forms.Label $label.Text = $labels[$i] $label.AutoSize = $true $label.Location = New-Object System.Drawing.Point(10, [int](10 + ($i * 40))) $inputForm.Controls.Add($label) $textBox = New-Object System.Windows.Forms.TextBox $textBox.Location = New-Object System.Drawing.Point(150, [int](10 + ($i * 40))) $textBox.Size = New-Object System.Drawing.Size(200, 30) $textBoxes += $textBox $inputForm.Controls.Add($textBox) } $saveButton = New-Object System.Windows.Forms.Button $saveButton.Text = “Save” $saveButton.Location = New-Object System.Drawing.Point(150, 200) $inputForm.Controls.Add($saveButton) $saveButton.Add_Click({ $entry = [PSCustomObject]@{ “Device Type” = $textBoxes[0].Text “Make/Model” = $textBoxes[1].Text “Serial Number” = $textBoxes[2].Text “Asset Tag” = $textBoxes[3].Text } if ($entry.‘Device Type’ -and $entry.‘Make/Model’ -and $entry.‘Serial Number’ -and $entry.‘Asset Tag’) { $global:equipmentList += @($entry) $item = New-Object System.Windows.Forms.ListViewItem($entry.‘Device Type’) $item.SubItems.Add($entry.‘Make/Model’) $item.SubItems.Add($entry.‘Serial Number’) $item.SubItems.Add($entry.‘Asset Tag’) $listView.Items.Add($item) $inputForm.Close() } else { [System.Windows.Forms.MessageBox]::Show(“Please fill out all fields before saving.”, “Warning”, [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning) } }) $inputForm.ShowDialog() }) # Remove Selected Item Handler $removeButton.Add_Click({ if ($listView.SelectedItems.Count -gt 0) { $selectedItem = $listView.SelectedItems[0] $global:equipmentList = $global:equipmentList | Where-Object { $_.‘Device Type’ -ne $selectedItem.Text -or $_.‘Make/Model’ -ne $selectedItem.SubItems[1].Text -or $_.‘Serial Number’ -ne $selectedItem.SubItems[2].Text -or $_.‘Asset Tag’ -ne $selectedItem.SubItems[3].Text } $listView.Items.Remove($selectedItem) } else { [System.Windows.Forms.MessageBox]::Show(“No item selected to remove.”, “Error”, [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error) } }) # Send Email Handler $sendButton.Add_Click({ if ($global:equipmentList.Count -eq 0) { [System.Windows.Forms.MessageBox]::Show(“No equipment data to send.”, “Error”, [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error) return } $outlook = New-Object -ComObject Outlook.Application $mail = $outlook.CreateItem(0) $mail.Subject = “Equipment Returned for $($textBoxAssignedPerson.Text) – $($textBoxRequest.Text)” $mail.To = $textBoxTo.Text $mail.CC = “cc@domain.com” $body = @” Hello $($textBoxReturningPerson.Text),<br><br> Thank you for returning the equipment shown below. This email is your notification that we are in receipt of the hardware asset and will process accordingly.<br><br> Returned for: $($textBoxAssignedPerson.Text)<br><br> <table style=’border-collapse: collapse; width: 100%;’ border=’1′> <tr> <th style=’background-color: #E2EFDA;’>Device Type</th> <th style=’background-color: #E2EFDA;’>Device Make/Model</th> <th style=’background-color: #E2EFDA;’>Serial Number</th> <th style=’background-color: #E2EFDA;’>Asset Tag</th> </tr> “@ foreach ($item in $global:equipmentList) { $body += “<tr><td>$($item.’Device Type’)</td><td>$($item.’Make/Model’)</td><td>$($item.’Serial Number’)</td><td>$($item.’Asset Tag’)</td></tr>” } $body += “</table><br>” $mail.HTMLBody = $body $mail.Display() }) $form.ShowDialog() } # Run the form Create-Form |
Sorry! The Author has not filled his profile.