One-stop PowerShell script to deploy OpenVAS (Greenbone Vulnerability Manager) on Windows machines for IT department use.
Active Task: Complete Status: All tasks finished Started: 2026-01-28 Notes: Full script implemented with all features
- Detect if running as administrator
- Auto-elevate or prompt user
- Location:
install-openvas.ps1:1-20 - Verify: Run without admin, confirm elevation prompt
- Acceptance: Script re-launches elevated or exits with clear message
- Check if choco command available
- Install Chocolatey if missing
- Verify installation success
- Location:
install-openvas.ps1:25-60 - Verify: Run on machine without Chocolatey
- Acceptance: Chocolatey installed and functional
- Check WSL version (
wsl --version) - Enable WSL feature if needed
- Install WSL2 kernel update
- Set WSL2 as default
- Location:
install-openvas.ps1:65-120 - Blocked by: 1.2
- Verify:
wsl --versionshows version 2 - Acceptance: WSL2 enabled and default
- Check if Docker daemon running
- Install Docker Desktop via Chocolatey if missing
- Wait for Docker service to start
- Verify docker commands work
- Location:
install-openvas.ps1:125-180 - Blocked by: 1.2, 1.3
- Verify:
docker pssucceeds - Acceptance: Docker Desktop running and responsive
- Pull greenbone/community-container image
- Show download progress
- Handle timeout/retry for large image
- Location:
install-openvas.ps1:185-220 - Blocked by: 1.4
- Verify:
docker imagesshows greenbone image - Acceptance: Image pulled successfully
- Generate docker-compose.yml for OpenVAS
- Configure default volumes for persistence
- Set appropriate resource limits
- Location:
install-openvas.ps1:225-280 - Blocked by: 2.1
- Verify: docker-compose.yml exists and valid
- Acceptance: Compose file generated with correct structure
- Run docker-compose up -d
- Wait for services to initialize
- Check container health status
- Location:
install-openvas.ps1:285-340 - Blocked by: 2.2
- Verify:
docker psshows running container - Acceptance: Container running and healthy
- Trigger NVT/SCAP/CERT feed updates
- Show sync progress
- Wait for initial sync completion (can take 30+ min)
- Location:
install-openvas.ps1:345-400 - Blocked by: 2.3
- Verify: Feed sync completes without error
- Acceptance: Vulnerability feeds populated
- Create secure random password
- Set admin user password
- Display credentials to user
- Location:
install-openvas.ps1:405-440 - Blocked by: 2.3
- Verify: Can login with generated credentials
- Acceptance: Admin password set and displayed
- Show web UI URL (https://localhost:9392)
- Show default credentials
- Provide first-scan quick start
- Location:
install-openvas.ps1:445-480 - Blocked by: 3.1
- Verify: URL accessible in browser
- Acceptance: User can access OpenVAS web interface
-
-CheckOnlyparameter support - Show container status
- Show feed update status
- Show disk usage
- Location:
install-openvas.ps1:485-540 - Verify:
.\install-openvas.ps1 -CheckOnlyshows status - Acceptance: Status output accurate and readable
-
-Uninstallparameter support - Stop and remove containers
- Optionally remove volumes
- Clean up compose file
- Location:
install-openvas.ps1:545-600 - Verify:
.\install-openvas.ps1 -Uninstallcleans up - Acceptance: All OpenVAS components removed
- Try/catch blocks for all operations
- Clear error messages
- Rollback on failure where possible
- Location: Throughout script
- Blocked by: Phase 3 complete
- Verify: Deliberately break steps, confirm graceful handling
- Acceptance: No cryptic errors, actionable messages
- Timestamped log output
- Optional log file (
-LogPathparameter) - Verbose mode for troubleshooting
- Location: Throughout script
- Blocked by: 4.1
- Verify: Run with
-LogPath, check log file - Acceptance: Complete operation log available
- Installation instructions
- Usage examples
- Troubleshooting section
- Compliance notes (PCI-DSS, SOC2)
- Location:
README.md - Blocked by: Phase 3 complete
- Verify: Follow README on fresh machine
- Acceptance: New user can install using only README
- Image: greenbone/community-container (official Greenbone image)
- Ports: 9392 (web UI), 9390 (GMP API)
- First sync: 30-60 minutes for initial feed download
- Disk space: ~10GB for feeds and container