PowerShell-based endpoint deployment automation for clear, auditable, and technician-friendly software support π§©
Overview β’ Use Cases β’ Features β’ Tech Stack β’ Workflow β’ Setup β’ Usage β’ Demo β’ Screenshots β’ Support Workflow β’ Validation β’ Security β’ Enhancements β’ Developer
Software Deployment Tool is a PowerShell-based endpoint support utility designed to simplify silent software installation, uninstallation, logging, and reporting across Windows machines.
This project was built around a practical IT Support / Desktop Support scenario:
A technician needs a repeatable way to deploy or remove software, track what happened, generate logs, and provide clear evidence after the task is complete.
The project demonstrates how PowerShell can be used to turn repetitive endpoint tasks into a structured support workflow with a simple GUI, repeatable script execution, and support-ready documentation.
It provides:
- Silent MSI/EXE Deployment: Install software packages with reduced user interruption.
- Uninstall Workflows: Remove applications using repeatable PowerShell logic.
- Install-State Checks: Track whether deployment actions completed successfully.
- Audit-Ready Logs: Generate timestamped CSV and HTML reports.
- Technician-Friendly GUI: Use a Windows Forms interface for manual support tasks.
- CLI Support: Run deployment actions through PowerShell for repeatable automation.
- Optional Email Reporting: Send deployment results through SMTP when configured.
| Use Case | What This Project Demonstrates |
|---|---|
| IT Support / Help Desk | Deploy or remove common tools while documenting what was changed. |
| Desktop Support | Run technician-friendly software installation workflows from a GUI. |
| Endpoint Support | Validate installation results and generate evidence for support handoff. |
| Software Troubleshooting | Review install/uninstall output, exit codes, logs, and reports. |
| Internal IT Documentation | Create repeatable steps, screenshots, and usage notes for future technicians. |
| Lab Validation | Test installer behavior before wider deployment or documentation. |
β
Silent Rollouts: Deploy or remove MSI/EXE packages across target machines.
β
Smart Detection: Detects and skips software that is already installed when applicable.
β
Live Reporting: Generates HTML and CSV logs for review and documentation.
β
Email Reporting: Optional SMTP notification with report attachments.
β
Exit Code Tracking: Handles deployment result codes such as 0, 3010, and common installer responses.
β
GUI-Based Workflow: Windows Forms interface for technician-friendly use.
β
CLI Automation: Can be used for repeatable PowerShell-based deployment workflows.
β
Support Evidence: Screenshots, logs, reports, and demo video are included for portfolio review.
| Layer | Technology |
|---|---|
| Scripting & Automation | PowerShell 5.1+ |
| Interface | Windows Forms (.NET) |
| Deployment Targets | Windows endpoints |
| Reporting | HTML / CSS |
| Data Export | CSV |
| Communication | SMTP Email Delivery |
| Packaging / Execution | PowerShell scripts, optional executable workflow |
| Documentation | Markdown, screenshots, demo video |
Technician / Support User
|
v
Launch GUI or PowerShell Script
|
v
Select Install / Uninstall Mode
|
v
Select Installer or Application Target
|
v
Read Target Machines
|
v
Run Deployment or Removal Workflow
|
v
Capture Result, Exit Code, and Status
|
v
Generate CSV Log and HTML Report
|
v
Optional Email Notification
|
v
Support Evidence and Handoff
| Phase | Purpose |
|---|---|
| Prepare Installer | Select the MSI/EXE package that needs to be deployed or removed. |
| Select Targets | Define local or remote endpoints through computers.txt or script parameters. |
| Run Deployment | Launch the GUI or PowerShell script to perform the install/uninstall task. |
| Validate Result | Review install status, exit codes, and generated logs. |
| Generate Evidence | Produce CSV and HTML reports for documentation and handoff. |
| Notify Support Team | Optionally send results through SMTP email reporting. |
SoftwareDeploymentTool/
β
βββ README.md
βββ LICENSE
βββ .gitignore
β
βββ DeploySoftware.ps1
βββ DeploymentToolGUI.ps1
βββ GenerateReport.ps1
βββ SendDeploymentEmail.ps1
β
βββ computers.txt
βββ config.json
β
βββ Screenshots/
βββ 01_Folder-Structure.png
βββ 02_Launch-GUI.png
βββ 03_Select-Installers.png
βββ 04_Ready-With-Email.png
βββ 05_Start-Deployment.png
βββ 06_Install-Run-And-Success.png
βββ 08_DeployLog-CSV.png
βββ 09_HTML-Report-Install.png
βββ 11_Email-Notification.png
Generated reports and runtime logs should remain local and should not include production secrets, company endpoint data, or private credentials.
git clone https://github.com/MoustafaObari/SoftwareDeploymentTool.git
cd SoftwareDeploymentToolOpen SendDeploymentEmail.ps1 and update your SMTP settings if you want automated email reports.
Do not commit real SMTP usernames, passwords, app passwords, tokens, or production credentials.
List your endpoints in computers.txt:
localhost
PC-01
Server-05
For a lab demo, localhost is enough to validate the workflow.
Run the launcher to access the visual interface:
powershell -ExecutionPolicy Bypass -File .\DeploymentToolGUI.ps1Use the deployment script directly for repeatable support workflows:
.\DeploySoftware.ps1 -Mode Install -InstallerPaths "C:\Apps\Chrome.msi" -Computers "localhost;PC-02"Use the same support concept to remove an application when the uninstall logic is configured:
.\DeploySoftware.ps1 -Mode Uninstall -AppName "Example Application" -Computers "localhost"πΊ Watch the tool in action:
π¬ Software Deployment Tool Demo
Recorded live on Windows 11 and demonstrates installation, uninstallation, logging, and email reporting.
| Folder Structure | Launch GUI | Select Installers |
|---|---|---|
![]() |
![]() |
![]() |
| Ready Email Config | Start Deployment | Install Success |
|---|---|---|
![]() |
![]() |
![]() |
| CSV Detailed Log | HTML Report View | Email Notification |
|---|---|---|
![]() |
![]() |
![]() |
| # | Screenshot | Description |
|---|---|---|
| 1 | Folder Structure | Shows the project layout, scripts, logs, and assets. |
| 2 | Launch GUI | Shows the main Windows Forms interface for deployment mode and target selection. |
| 3 | Select Installers | Shows installer file selection for deployment. |
| 4 | Ready Email Config | Shows the email reporting configuration step. |
| 5 | Start Deployment | Shows the deployment workflow starting from the GUI. |
| 6 | Install Success | Shows successful software deployment output. |
| 7 | CSV Detailed Log | Shows timestamped deployment results in CSV format. |
| 8 | HTML Report View | Shows the generated HTML deployment report. |
| 9 | Email Notification | Shows an SMTP email notification with report output. |
This project follows a practical endpoint support workflow that a technician could use when deploying or removing software in a lab or small support environment.
| Step | Technician Action | Support Value |
|---|---|---|
| 1. Identify Need | Determine whether software needs to be installed, removed, or validated. | Creates a clear support objective before running tools. |
| 2. Prepare Package | Select the MSI/EXE installer or uninstall target. | Ensures the correct package is used. |
| 3. Select Endpoint | Define target machines in computers.txt or script parameters. |
Keeps deployment scope controlled. |
| 4. Run Tool | Use the GUI or CLI workflow. | Supports both manual and repeatable execution. |
| 5. Review Output | Check console output, generated CSV, and HTML report. | Confirms success, failure, or skipped actions. |
| 6. Document Result | Save reports and screenshots as evidence. | Supports handoff and future troubleshooting. |
| 7. Notify Stakeholders | Send optional email report if SMTP is configured. | Makes deployment results easier to share. |
The project includes screenshots and output evidence showing the tool working end-to-end.
| Evidence Area | What Was Captured | Why It Matters |
|---|---|---|
| Folder Structure | Project files, scripts, logs, and assets | Shows the tool is organized and repeatable. |
| GUI Launch | Windows Forms interface loading successfully | Confirms technician-friendly operation. |
| Installer Selection | MSI/EXE selection workflow | Shows the tool can handle deployment inputs. |
| Deployment Run | PowerShell deployment execution | Confirms the tool performs the intended task. |
| CSV Log Output | Timestamped deployment result log | Provides audit-ready support evidence. |
| HTML Report | Browser-readable deployment summary | Makes results easier to review and share. |
| Email Notification | SMTP notification with report output | Demonstrates optional automated reporting. |
This project is designed as a support automation lab, not a production enterprise deployment platform. In real environments, software deployment should follow approved change management, endpoint security, and access control procedures.
The safer design choices are:
- β Use a controlled list of target machines.
- β Keep credentials and SMTP secrets out of the repository.
- β Generate local logs and reports for review.
- β Use PowerShell execution intentionally instead of hiding actions.
- β Document install results for troubleshooting and support handoff.
- β Avoid claiming production-scale deployment without enterprise tools.
- The tool can launch from a GUI.
- A technician can select installers and target machines.
- Deployment actions can be logged.
- HTML and CSV reports can be generated.
- Email reporting can be integrated.
- The workflow is repeatable and documentable.
- It is not a replacement for Microsoft Intune, SCCM, or enterprise RMM tools.
- It does not store production credentials.
- It does not include real company endpoints.
- It does not bypass endpoint security controls.
- It does not claim production deployment at enterprise scale.
This project strengthened my understanding of:
- PowerShell scripting for endpoint support tasks.
- Silent MSI/EXE installation and uninstall workflows.
- Windows Forms GUI design for technician-friendly tools.
- CSV logging for repeatable support evidence.
- HTML report generation for clear documentation.
- SMTP email reporting for automated notifications.
- Exit code handling and deployment troubleshooting.
- Structuring scripts so support workflows are easier to repeat.
- Writing GitHub documentation that explains both the tool and the support value.
Built a PowerShell-based software deployment utility for silent MSI/EXE installs, uninstall workflows, install-state checks, logging, SMTP email notifications, and HTML reporting. Packaged the tool with a Windows Forms GUI to demonstrate technician-friendly endpoint support automation, repeatable troubleshooting, and audit-ready documentation.
| Category | Skills |
|---|---|
| PowerShell Automation | Scripted install/uninstall workflows, parameters, logging, and execution handling |
| Desktop Support | Software installation, uninstall support, endpoint readiness checks |
| Windows Support | Windows Forms GUI, local machine testing, installer execution |
| Reporting | CSV logs, HTML reports, timestamped output, support evidence |
| Troubleshooting | Exit code review, install-state checks, deployment validation |
| Documentation | README, screenshots, usage instructions, demo evidence |
| Support Handoff | Clear logs and reports for review by another technician or support team |
- π Add parallel execution for faster multi-endpoint rollouts.
- π Add dry-run mode to preview deployment actions before execution.
- π Add visual charts for success and failure statistics in reports.
- π¬ Add Microsoft Teams or Slack webhook notifications.
- π§Ύ Add more detailed install-state validation before and after deployment.
- π Add safer configuration handling for SMTP settings through environment variables.
Moustafa Obari
IT Support Specialist | PowerShell Automation | Microsoft 365 / Entra / Intune
π Toronto, Canada
π GitHub | LinkedIn
π§ moustafaobari@gmail.com
Β© 2025 Moustafa Obari β crafted with π PowerShell, Markdown, and strong coffee.








