AzureLocalRanger
1.2.0
Minimum PowerShell version
7.0
Installation Options
Owners
Copyright
(c) 2026 Hybrid Cloud Solutions. All rights reserved.
Package Details
Author(s)
- Azure Local Cloud
Tags
AzureLocal AzureStackHCI HCI Arc ArcEnabledInfrastructure PowerShell Documentation Inventory Audit AsBuilt Report Discovery HealthCheck Cluster FailoverClustering Windows WindowsServer Hyper-V StorageSpacesDirect S2D
Functions
Invoke-AzureLocalRanger New-AzureLocalRangerConfig Export-AzureLocalRangerReport Test-AzureLocalRangerPrerequisites Invoke-RangerWizard
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## v1.2.0 — UX & Transport
### Added
- **Arc Run Command transport (#26)** — `Invoke-AzureLocalRanger` now routes WinRM workloads
through Azure Arc Run Command (`Invoke-AzConnectedMachineRunCommand`) when cluster nodes
are unreachable on ports 5985/5986. Transport mode is controlled by `behavior.transport`
(auto / winrm / arc) and falls back gracefully when `Az.ConnectedMachine` is absent.
- **Disconnected / semi-connected discovery (#30)** — A pre-run connectivity matrix probes
all transport surfaces (cluster WinRM, Azure management plane, BMC HTTPS) and classifies
the runner posture as `connected`, `semi-connected`, or `disconnected`. Collectors whose
transport is unreachable are skipped with `status: skipped` rather than failing mid-run.
The full matrix is stored in `manifest.run.connectivity` for observability.
- **Spectre.Console TUI progress display (#76)** — A live per-collector progress display
using PwshSpectreConsole renders during collection when the module is installed and the
host is interactive. Falls back to `Write-Progress` automatically. Suppressed in CI and
Unattended mode. Enable with `-ShowProgress` or `output.showProgress: true` in config.
- **Interactive configuration wizard (#75)** — `Invoke-RangerWizard` walks through a
prompted question sequence (cluster, nodes, Azure IDs, credentials, output, scope) and
offers to save the config as YAML, launch a run immediately, or both.
## v1.1.2 — Regression Patch
### Fixed
- Schema contract (`Get-RangerManifestSchemaContract`) rewritten as inline hashtable — eliminates
FileNotFoundException for PSGallery installs where repo-management/ is not present (#160).
- `toolVersion` in manifests now reflects the installed module version dynamically via
`Get-RangerToolVersion` — no longer hardcoded to '1.1.0' (#161).
- `Invoke-RangerRedfishRequest` now passes `-Label` and `-Target` to `Invoke-RangerRetry` so
BMC/Redfish retry log entries carry actionable label and URI (#162).
- `$DebugPreference` no longer set to `'Continue'` at debug log level — eliminates thousands of
MSAL and Az SDK internal debug lines flooding output (#163).
- Null entries filtered from collector message arrays before manifest and report assembly (#164).
- Domain credential probed before cluster credential in `Get-RangerRemoteCredentialCandidates` —
eliminates redundant WinRM auth retries on domain-joined clusters (#165).
### Added
- 20 Pester unit tests in `tests/maproom/unit/Execution.Tests.ps1` covering all 9 regression
bugs (#157–#165). Trailhead field validation closed on live tplabs cluster.
## v1.0.0 — PSGallery Launch
### New Features
- **Parameter-first input model** — pass ClusterFqdn, ClusterNodes, SubscriptionId,
TenantId, and ResourceGroup directly to Invoke-AzureLocalRanger without a config file.
- **Arc-first node inventory** — cluster nodes are auto-resolved from Azure Arc resource
properties before falling back to direct WinRM scan or static config.
- **Domain auto-detection** — domain FQDN is resolved from Arc, CIM, or credential hints;
workgroup clusters are handled gracefully with an informational finding.
- **File-based logging** — every run writes a plain-text ranger.log alongside reports.
- **Self-documenting config scaffold** — New-AzureLocalRangerConfig emits YAML with inline
comments and [REQUIRED] markers on all mandatory fields.
- **Unreachable-node finding** — a warning finding is raised for any configured node that
does not respond to WinRM during the topology collection pass.
- **Comment-based help** — Get-Help is now fully populated for all four public commands.
### Bug Fixes
- Fixed null-reference crashes in the storage collector when any sub-section
(tiers, subsystems, resiliency, jobs, csvs, qos, sofs, replica, clusterNetworks)
throws during a remote session.
### Improvements
- retryCount and timeoutSeconds from config are now applied to every WinRM operation.
- PSGallery manifest metadata, tags, and description updated for discoverability.
FileList
- AzureLocalRanger.nuspec
- AzureLocalRanger.psd1
- AzureLocalRanger.psm1
- LICENSE
- Modules\Collectors\10-TopologyClusterCollector.ps1
- Modules\Collectors\20-HardwareCollector.ps1
- Modules\Collectors\30-StorageNetworkingCollector.ps1
- Modules\Collectors\40-WorkloadIdentityAzureCollector.ps1
- Modules\Collectors\50-MonitoringCollector.ps1
- Modules\Collectors\60-ManagementPerformanceCollector.ps1
- Modules\Core\10-Manifest.ps1
- Modules\Core\20-Runtime.ps1
- Modules\Internal\01-Definitions.ps1
- Modules\Outputs\Diagrams\10-Diagrams.ps1
- Modules\Outputs\Reports\10-Reports.ps1
- Modules\Outputs\Reports\20-OfficeOutputs.ps1
- Modules\Outputs\Templates\10-AsBuilt.ps1
- Modules\Private\10-Utilities.ps1
- Modules\Private\20-Config.ps1
- Modules\Private\30-Credentials.ps1
- Modules\Private\40-Execution.ps1
- Modules\Private\50-CollectorSupport.ps1
- Modules\Private\55-DiscoveryResolvers.ps1
- Modules\Private\60-NetworkDeviceParser.ps1
- Modules\Private\70-Connectivity.ps1
- Modules\Private\80-ProgressDisplay.ps1
- Modules\Public\10-Commands.ps1
- README.md
- en-US\about_AzureLocalRanger.help.txt