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''/$nullclearing onSet-*. - Module bay types (NetBox 4.7):
Get/New/Set/Remove-NBDCIMModuleBayType, plus-Module_Bay_TypesonNew/Set-NBDCIMModuleBay,-NBDCIMModuleBayTemplateand-NBDCIMModuleType. Module relocation works throughSet-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) —-Allwalks large tables with NetBox 4.6+?start=<pk>instead of limit/offset; offset fallback below 4.6, explicit-Offsetalways wins, pagination origin guard unchanged.-OptimisticConcurrency(#439) — ETags from single-object reads are replayed asIf-Matchon the next update/delete; a stale write now fails with412 Precondition Failedand 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'onNew-*/Set-*always failed with400 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
-Backgroundon the bulk-capableNew-*/Set-*/Remove-*cmdlets andSend-NBBulkRequest: NetBox 4.7 queues each batch as a background job (202 Accepted); the job objects are returned forGet-NBJob.docker-compose.ci.ymlgains an optionalworkerprofile.
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