A PowerShell toolkit for managing a Ventoy USB drive ISO library. Includes scripts to automatically organise ISOs into a structured directory tree by OS, version, and architecture, parsing filenames across 150+ distributions and tools spanning every major Linux family, BSD variants, Windows, hypervisors, network appliances, and rescue utilities. Also generates a ventoy.json boot menu grouped by OS family and bulk-downloads the latest releases via wget for distributions with stable public URLs.
Ventoy Extras does not require Ventoy itself to be installed and works on any directory structure, making the scripts useful standalone regardless of how you boot your ISOs.
Documents the organise-isos and generate-ventoy-json workflow end-to-end: quick start in the README, full procedure with troubleshooting and recovery in docs/RUNBOOK.md, and reference docs for each script covering parameters, parsing rules, category groupings, and extensibility. Ships a YOLO licence (no warranty) and seeds CHANGELOG.md for the v0.1.0 release. |
||
|---|---|---|
| docs | ||
| CHANGELOG.md | ||
| generate-ventoy-json.ps1 | ||
| LICENSE | ||
| organise-isos.ps1 | ||
| README.md | ||
ventoy-extras
PowerShell helpers for keeping a tidy Ventoy USB
drive. Drops a pile of randomly-named ISOs into a sensible directory tree, then
generates a categorised ventoy.json so the boot menu groups them by OS family
instead of vomiting one flat list.
Two scripts, no dependencies beyond Windows PowerShell 5.1 (or PowerShell 7+).
Scripts
| Script | Purpose |
|---|---|
organise-isos.ps1 |
Parse ISO filenames, infer os/version/arch, move into iso-library\<os>\<version>\<arch>\ |
generate-ventoy-json.ps1 |
Walk that tree and emit ventoy.json with a per-family submenu structure |
Quick start
# 1. Drop all your downloaded ISOs into a working directory, then:
.\organise-isos.ps1 -SourceDir .\downloads -DestDir .\iso-library -DryRun
# Review the planned moves, then re-run without -DryRun
.\organise-isos.ps1 -SourceDir .\downloads -DestDir .\iso-library
# 2. Generate the ventoy menu config:
.\generate-ventoy-json.ps1 -IsoRoot .\iso-library -OutFile .\ventoy.json
# 3. Copy iso-library\ to the root of your Ventoy USB, and copy
# ventoy.json into the ventoy\ folder on that same drive.
That's the whole workflow. See docs/RUNBOOK.md for the
detailed operational walkthrough, and the per-script docs for the gory bits.
Documentation
docs/RUNBOOK.md— end-to-end procedure, troubleshooting, recoverydocs/organise-isos.md— parameters, naming rules, OS detection mapdocs/generate-ventoy-json.md— parameters, category groupings, menu layoutdocs/directory-layout.md— what the on-disk tree looks like and why
Directory layout produced
iso-library\
ubuntu\
24.04\
x86_64\
ubuntu-24.04.1-desktop-amd64.iso
debian\
12\
x86_64\
debian-12.5.0-amd64-netinst.iso
rocky\
9\
aarch64\
Rocky-9.3-aarch64-minimal.iso
...
Three levels: OS slug, version, architecture. Ventoy follows directories transparently, so the same tree is what ends up on the USB.
Requirements
- Windows PowerShell 5.1 or PowerShell 7+
- A Ventoy USB drive (set up separately — see ventoy.net)
- Enough disk space to hold your ISO collection twice during reorganisation
License
YOLO LICENSE — do whatever you want with it, no warranty, things may blow up.