Thanks for your interest! New scripts, .wsb profiles, and doc improvements are all welcome.
- For non-trivial changes, open an issue first to discuss the approach.
- Keep changes scoped: one PR per logical change.
There's nothing to install — everything is .ps1 and .wsb. To test your changes properly you need a host that already has Windows Sandbox enabled (see enableSandboxFeature.ps1).
- Prefer full cmdlet names over aliases (
Invoke-RestMethod, notirm). - New scripts should start with
#Requires -Version 5.1and$ErrorActionPreference = 'Stop'. - Use
$PSScriptRootfor paths in scripts that depend on their own location — avoid relative paths that break depending on the caller's PWD. - If a script downloads a release asset, resolve "latest" dynamically via the project's release API rather than pinning a version.
- Avoid
Write-Hostunless you genuinely need formatted user-facing output — otherwise prefer pipeline output.
- Put it in the appropriate directory:
Utils/Scripts/AdditionalScripts/OnHost/— runs on the hostUtils/Scripts/AdditionalScripts/InSandbox/— runs inside the sandbox
- Add a row to the Scripts reference table in
README.md. - If it pulls from a new upstream URL, add that URL to
.github/workflows/url-liveness.yml.
PRs run PSScriptAnalyzer, parse every .ps1, and validate the .wsb XML on ubuntu-latest. Make sure CI is green before requesting review.
Sandbox-level behavior can't be tested in CI (GitHub-hosted Windows runners don't support nested virtualization). For any code change, confirm manually that it works inside a real sandbox and note that in the PR description.
Don't open public issues for security vulnerabilities — see SECURITY.md.