Single-exe service manager and diagnostic collector for Veeam Backup & Replication.
- Services — start/stop/restart Veeam services in dependency order, with a guard that refuses to tear down a running backup.
- Collect Diagnostics — package logs, config, event logs, database logs and system info into one zip for support.
No install, no PowerShell, no .NET runtime needed on the target.
Services tab — core services sorted first and pre-selected, live status, force-kill opt-in:
Collect Diagnostics tab:
Hostnames and usernames in the screenshots are replaced with placeholders.
Grab VeeamToolkit.exe from Releases, copy it to the Veeam server, run it. It requests elevation itself.
| Dependency order | Dependents stop first, dependencies start first. Restart fully stops the set before starting any of it back up. |
| Hidden dependents | Services you didn't select but that block the stop are listed up front, before anything happens. |
| Running-job guard | Checks for active jobs before every stop/restart and names them. Dialog defaults to No. Says so explicitly when job state can't be confirmed. |
| Force-kill | Optional, off by default. Kills the host process of a service that won't stop in time. Refuses when the process hosts other services. |
| Problem highlighting | Services set to Automatic but sitting Stopped are red — usually the actual fault. |
| Live status | Auto-refreshes every 3s without losing selection or scroll position. |
Actions run on a background thread with a working Cancel and a per-service timeout (default 120s).
Archive layout:
VeeamDiag_<HOST>_<timestamp>.zip
├── SUMMARY.txt <- read first
├── manifest.csv <- every file, and why anything was skipped
├── 01_Veeam_Logs\
├── 02_Veeam_State\ services, versions, registry, job inventory
├── 03_Config_Files\
├── 04_Installer_Logs\
├── 05_Setup_Folder\
├── 06_Database_Logs\ SQL Server + PostgreSQL
├── 07_Event_Logs\ .evtx + filtered .csv
└── 08_System_Info\
- Paths resolved from the registry, so non-
C:\installs work. - Reads logs Veeam still holds open (
Copy-Itemcan't). - Size, age and total-size caps so a multi-gigabyte log tree can't run away. Defaults: 150 MB/file, 30 days, 4 GB total, 14-day event window.
- Every skip and failure is recorded — an empty folder never silently means "access denied".
- Windows 10 / Server 2016 or newer, x64
- Administrator (enforced by the manifest)
- Veeam PowerShell module, optional — only for the job inventory and the running-job guard; skipped cleanly without it
.\build.ps1Needs .NET SDK 8+. Targets net8.0-windows; output is a single self-contained exe in dist\.
.\build.ps1 -Runtime win-arm64- The exe is unsigned — SmartScreen will warn. Sign it before wide distribution.
- Collected logs contain hostnames, usernames, paths and IPs. Review before sending outside your org.
- Force-kill is an ungraceful termination. On
VeeamBackupSvcit can leave the configuration database mid-transaction.
MIT — see LICENSE.

