Skip to content

PowerNetbox v4.7.0.1

Released 2026-09-09 - View on GitHub

PowerNetbox v4.7.0.1 — the NetBox 4.7 feature set, cursor pagination, optimistic concurrency, tag filters

Follows the v4.7.0.0 compatibility release and closes the NetBox 4.7 backlog (#473) plus #439 and #440. Tested against NetBox 4.7.0 / 4.6.10 / 4.5.10 / 4.4.10 / 4.3.7 (Docker) — every new parameter and option is version-gated and degrades safely on older servers.

New endpoints (24 cmdlets)

  • Cooling infrastructure (NetBox 4.7): Get/New/Set/Remove-NBDCIMCoolingSource, -CoolingFeed, -CoolingIntake, -CoolingOutflow, -CoolingIntakeTemplate, -CoolingOutflowTemplate — modelled on the power cmdlets, with all filters from the 4.7 schema and ''/$null clearing on Set-*.
  • Module bay types (NetBox 4.7): Get/New/Set/Remove-NBDCIMModuleBayType, plus -Module_Bay_Types on New/Set-NBDCIMModuleBay, -NBDCIMModuleBayTemplate and -NBDCIMModuleType. Module relocation works through Set-NBDCIMModule -Module_Bay / -Device (documented).

New 4.7 fields on existing cmdlets

Interface -Channels / -Channel_Id / -MAC_Address (+ interface templates), -Cooling_Method on devices, device types and module types, -End_Of_Life on device/module types, -Cooling_Capability / -Cooling_Capacity on racks and rack types — each with matching Get filters, all gated to NetBox 4.7 (warning + omitted on older servers). Rack form_factor / width / outer_* are marked deprecated (NetBox 4.7 → removed in 5.0).

Query options (Set-NBQueryOption)

  • -Pagination Cursor (#440) — -All walks large tables with NetBox 4.6+ ?start=<pk> instead of limit/offset; offset fallback below 4.6, explicit -Offset always wins, pagination origin guard unchanged.
  • -OptimisticConcurrency (#439) — ETags from single-object reads are replayed as If-Match on the next update/delete; a stale write now fails with 412 Precondition Failed and a re-read hint instead of overwriting someone else's change (PowerShell 7+, NetBox 4.6+).
  • -TagMatch Any — tag__any / tag_id__any (NetBox 4.6.6+): match objects carrying any of the tags instead of all of them.

Tags

  • -Tag <slug[]> and -Tag_Id <id[]> filters on 100 Get cmdlets (every list endpoint that supports them) — these were missing entirely.
  • Fix: -Tags 'name' on New-*/Set-* always failed with 400 Related objects must be referenced by numeric ID or by dictionary of attributes; names are now sent as { "name": ... } (IDs and attribute dictionaries still pass through).
  • Set-NBObjectTag -Add / -Remove — partial tag assignment (add_tags / remove_tags, NetBox 4.6+) on any object or API path, pipeline friendly; refuses on servers that would silently ignore it.

Bulk

  • -Background on the bulk-capable New-* / Set-* / Remove-* cmdlets and Send-NBBulkRequest: NetBox 4.7 queues each batch as a background job (202 Accepted); the job objects are returned for Get-NBJob. docker-compose.ci.yml gains an optional worker profile.

Local testing is Docker-only now

scripts/Start-NetboxDocker.ps1 -Version 4.7.0|4.6.10|4.5.10|4.4.10|4.3.7 [-Worker] [-SetEnvironment|-Status|-Down] starts one stack per NetBox version (fixed ports 8000–8004, correct image tag and API token per netbox-docker generation); scripts/Test-AllNetboxVersions.ps1 runs the Live tests across the whole matrix. Scenario tests, TestData scripts and docs point at these stacks. The new-netbox-endpoint skill documents the workflow and the pitfalls found this cycle.

Verification

Unit suite 2874 passed / 0 failed; CodeQuality parity gate, ValidateSet parity (4.7.0), filter-exclusion audit and PSScriptAnalyzer clean; Live integration 4.7.0 113/113, 4.3.7 96 + 14 skipped; every new endpoint/field exercised create → read → filter → update → delete on NetBox 4.7.0; ETag 412, cursor paging, TagMatch Any and background bulk (with RQ worker) verified end-to-end.

Full Changelog: https://github.com/ctrl-alt-automate/PowerNetbox/compare/v4.7.0.0...v4.7.0.1