PowerNetbox v4.5.8.1
Released 2026-04-17 - View on GitHub
Patch release bundling two internal quality improvements on top of v4.5.8.0. No NetBox version target change (still NetBox 4.5.8). No new API surface; no new features.
6 HIGH-severity ValidateSet drift fixes (#392, PR #399)
Closes six of the HIGH-severity items tracked in #392 — PowerNetbox's ValidateSet decorators were narrower than NetBox's actual enum sets, so users could not supply legitimate API values. Every change is strictly additive:
| Function(s) | Parameter | Values added |
|---|---|---|
New/Set-NBVPNTunnel |
-Encapsulation |
l2tp, openvpn, pptp, wireguard |
New-NBVPNIKEProposal |
-Authentication_Method |
rsa-signatures, dsa-signatures |
Get/New/Set-NBVirtualMachine |
-Status |
paused |
Get/New/Set-NBDCIMRack |
-Status |
available |
New/Set-NBEventRule |
-Action_Type |
notification |
New-NBVirtualMachineInterface |
-Mode |
q-in-q |
Drift-tool count: 17 → 5 findings (12 per-function parity entries closed across 6 issue items).
Brief/Fields/Omit mutual exclusion now enforced on all Get functions (#397 PR-2, PR #400)
PR #397 in v4.5.8.0 introduced the mutex check and applied it to 3 pilot functions. This release completes the rollout:
- Applies the
AssertNBMutualExclusiveParamcall to the remaining 121 Get functions that declare all three filter parameters - Adds the same
config_contextauto-omit guard onGet-NBVirtualMachinethatGet-NBDCIMDevicegot in PR #398 - Ships a new AST-based auditor (
scripts/Verify-FilterExclusion.ps1) wired into CI as.github/workflows/filter-exclusion.yml, so future Get functions cannot silently regress the invariant - Adds per-function
.NOTEShelp text documenting the mutual-exclusion rule
Breaking-change note: the mutex check itself was already breaking in v4.5.8.0 (for 3 functions). This release expands the surface to all 124 Get functions with the three filter parameters. Scripts that silently combined any two of those flags were already broken — they now get a clear ParameterBindingException with the conflicting parameter names in the message.
Handled during the rollout
Functions/IPAM/Aggregate/Get-NBIPAMAggregate.ps1had itsprocess {block at column 0 (pre-existing indentation drift) — re-indented during this PR.Functions/Setup/Support/Get-NBContentType.ps1has noprocessblock (delegates toGet-NBObjectTypevia splatting) — wrapped the delegation in aprocessblock so the mutex assertion runs before the splat passes potentially-conflicting parameters through.
Stats
- 32 new unit + integration tests
- Full unit regression: 2291 passed / 0 failed
- Integration test matrix green on Netbox 4.3.7, 4.4.10, 4.5.8
- 171 function files touched in total
Published to the PowerShell Gallery automatically by the release workflow.