AzStackHci.DiagnosticSettings
0.6.9
Microsoft Azure Local - Diagnostics settings and connectivity tests support module
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) 2026 Microsoft Corporation. All rights reserved.
Package Details
Author(s)
- Microsoft Corporation
Tags
Microsoft AzStackHci Diagnostic Settings Connectivity AzureLocal
Functions
Get-AzStackHciMemoryDumpSettings Set-AzStackHciMemoryDumpSettings Restore-AzStackHciMemoryDumpSettings Get-AzStackHciPageFileSettings Restore-AzStackHciPageFileSettings Set-AzStackHciPageFileSettings Set-AzStackHciPageFileSettingsMinimal Get-AzStackHciUserModeCrashDumpSettings Set-AzStackHciUserModeCrashDumpSettings Restore-AzStackHciUserModeCrashDumpSettings Test-AzStackHciSSLInspection Send-ClusterPerformanceHistory Test-AzureLocalConnectivity Test-Layer7Connectivity Test-TCPConnectivity Get-AzStackHciOsConfigSettings Test-ArcMachinePrivateLinkScopeEnabled Remove-AzStackHciDiagnosticArtifact Get-AzStackHciVMCheckpointHealth
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## v0.6.9
- OSConfig schema 1.3 reports component evidence; partial healthy evidence is SKIPPED.
- Layer 7 retries transient connection failures once.
- Test-ArcMachinePrivateLinkScopeEnabled validates full Arc machine IDs and queries the encoded subscription instead of relying on the active Az context.
- Reconciles Get-AzStackHciVMCheckpointHealth through upstream v0.2.33: bounded historic jobs with explicit incomplete coverage, evidence-incomplete report totals, corrected VmEvents example, VM-associated ImageStore AVHDX classification, aggregate attached-chain size, and all v0.2.32 identity/event/artifact/confidence improvements.
- Initializes StrictMode cleanup and fallback state before exception-prone proxy parsing, range-probe, TLS-request, diagnostic-upload, preference-restoration, and cluster page-file paths. Normal single-proxy connectivity tests now reach download testing and final HTML/CSV report-location output.
- Separates canonical reports and restore backups into typed Reports and Backups folders. Report producers warn about recognized artifacts older than 180 days without deleting them. Remove-AzStackHciDiagnosticArtifact provides explicit WhatIf/ShouldProcess cleanup; backups require explicit selection, valid checksums, 730-day age by default, and retention of at least five newest valid files. Restore prefers typed backup folders and falls back to the legacy root. ACLs are unchanged.
- Page-file backups now use a versioned SHA-256 payload; restore validates path, filename, schema, target, and sizes before mutation. Unsigned legacy backups require -AllowLegacyUnsignedBackup, and page-file restore reports rollback outcome.
- Page-file, memory-dump, and user-mode crash-dump cluster restores now return one result per target node with AttemptedNodeCount, ReturnedNodeCount, and Complete telemetry; failed apply operations include rollback telemetry.
- Connectivity fan-out, checkpoint diagnostic and ownership fan-outs, and OS-config Drift Control collection now use a shared 30-minute deadline, stop timed-out jobs, preserve completed evidence, and report incomplete outcomes explicitly.
- Introduces Get-AzStackHciVMCheckpointHealth, a read-only checkpoint, differencing-disk, Hyper-V Replica, storage, event, and VSS health assessment with TXT, CSV, HTML, telemetry, debug-log, and ZIP artifacts.
- The command indexes events by VM identity, identifies the audited VM in event CSV rows, guarantees event CSV artifacts for early exits, classifies cluster-role/Hyper-V inventory mismatches explicitly, and distinguishes VHD topology completeness from file-metadata completeness.
- CSVs reporting IncompatibleFileSystemFilter receive conditional read-only validation guidance for CSV state, cross-node minifilters, and recent Failover Clustering events. FileSystemReFs alone remains expected, and the report does not instruct operators to unload a filter.
- Base disks use Disk age while Checkpoint age is reserved for attached AVHDX layers; per-VM TXT tables show VM-attributed events and summarize node-wide context separately; CSVs include CollectedAsConcern plus typed classification/disposition. Replica advisories remain explicit in OK prose, sustained fleet-only 15268 context is linked inside storage health, and housekeeping distinguishes unreferenced VM-folder disks from owner/folder mismatches without filename-based ownership inference. This command is supported and tested only with Windows PowerShell 5.1; invoking it from PowerShell 7 fails with an actionable runtime message.
- Test-AzureLocalConnectivity now warns when -ForceGitHubEndpointsUpdate is used WITHOUT -NoAutoUpdate (the GitHub endpoint refresh is already attempted by default, so the switch is a no-op on its own) — mirrors the existing -InstallMissingModuleOnNodes guidance.
- Get-AzStackHciOsConfigSettings pending-reboot detection regex tightened to require both "reboot" and "pending" so it can never accidentally match the "No pending reboot" line.
- Cluster -PassThru JSONReportPath is now derived with [IO.Path]::ChangeExtension, so it always carries a .json extension and can never accidentally equal ReportPath.
- Output handling is hardened so -NoOutput state does not affect later calls, machine-level verbose/debug preferences do not leak into module output, and normal progress remains visible. Test-ArcMachinePrivateLinkScopeEnabled now also confirms when the Arc machine uses the expected public endpoints with no Private Link Scope assigned.
- Get-AzStackHciOsConfigSettings aligns HTML and -PassThru health outcomes: detected domain GPOs and Arc Agent version drift are warnings, complete local-only GPO evidence passes, and unavailable or N/A GPO evidence is shown as Unknown and skipped rather than reported as healthy.
- Pending reboot warnings now propagate through each affected node's HTML section, Events & Reboots sub-tab, and node tab. JSON and -PassThru expose typed trigger reasons under PendingRebootHealth.Details[] and every Nodes[].PendingReboot entry; the additive OS-config health-summary schema advances from 1.1 to 1.2.
- OSConfig CSV evidence is array-normalized for Windows PowerShell 5.1 single-row correctness. Power Plan consistency now measures agreement only; NTP-source and installed-program differences are warnings. Missing Drift Control is emitted as SKIPPED with node details, and StabilityEvents adds a uniform Details alias while preserving Events. Schema remains 1.2 before release.
- Connectivity HTML summaries now classify findings and distinguish configuration gaps from connectivity failures. OSConfig summaries wrap on mobile. Contracts are unchanged.
## v0.6.8
Focus: make the -PassThru object contracts robust for consumption by other modules (e.g. AzStack.Insights). SchemaVersion bumps 1.0 -> 1.1 (additive only — new fields, nothing removed or renamed).
### Get-AzStackHciOsConfigSettings — predictable -ExportPath + first-class output location + opt-in inventory
- -ExportPath is now honoured LITERALLY as the destination ROOT. Each run creates a unique timestamped subfolder INSIDE it: <ExportPath>\<ClusterOrNodeName>-<yyyyMMdd-HHmmss>\. Previously the caller's leaf was rewritten to <ClusterName>_<leaf> and the run folder was placed as a SIBLING (via Split-Path -Parent), so the literal path never existed. Same layout for -Scope Node and -Scope Cluster; the root is created if missing.
- New default root = C:\ProgramData\AzStackHci.DiagnosticSettings (always writable on a locked-down Azure Local node, unlike C:\Temp). The automatic mirror of the HTML + JSON reports to ProgramData is retained.
- New -PassThru properties: OutputDirectory (the resolved run folder) and DataCollectionDirectory (<OutputDirectory>\Data-Collection, or null when no on-disk data was written), alongside HTMLReportPath / JSONReportPath. All four are null in -HealthSummaryOnly mode.
- New -IncludeInventoryData switch (default OFF): nests per-node InstalledPrograms / WindowsFeatures / Hotfixes / DriverVersions under each Nodes[] entry so consumers get typed data without parsing CSVs. Default OFF keeps casual -PassThru calls lightweight.
- Deep PSCustomObject normalisation of the -PassThru object: the returned object and every nested level (Nodes[], ConsistencyChecks, Fingerprints, Details, inventory entries) is a PSCustomObject, not an OrderedDictionary, so the live object behaves like a JSON round-trip and consumers can use $node.PSObject.Properties['X'] guards directly. Key order preserved; on-disk JSON unchanged. Additive / non-breaking.
- Data hygiene: inventory strings are trimmed, a single unbalanced wrapping double-quote is stripped (balanced "..." values like an UninstallString are preserved), and empty / (not parsed) / (not collected) placeholders are normalised to null. ArcAgentHealth.Details[] Status/Version cleaned the same way.
### Test-AzureLocalConnectivity — -PassThru reshaped into a structured object
- -PassThru now returns a normal PSCustomObject with run-level data on REAL properties and the per-URL rows nested under .Results — the same shape as the on-disk JSON summary (one contract). This replaces the fragile v0.6.7 pattern that bolted ~17 NoteProperty members onto the results ArrayList and returned ,$array: any pipeline op on the collection silently dropped those NoteProperties, and the ,$array return carried a "callers must not @()-wrap" landmine. Run-level fields now survive Where-Object / Select-Object / Sort-Object on .Results.
- SchemaVersion ("1.1") added to the connectivity object + JSON summary (parity with OsConfig).
- Cluster -PassThru unified: -Scope Cluster -PassThru returns the same structured shape, nesting each node's structured object (flat run-level fields + Detections + .Results) under .Nodes[]. The internal HTML/CSV cluster report is unchanged.
- BREAKING for anything that read the old container NoteProperties or iterated the return as rows. The module's own tests + Helpers\Compare-*Performance.ps1 / automated-test-all-azure-regions.ps1 were updated to read run-level data from $r.<field> and rows from $r.Results.
## v0.6.7 (recap)
Three headline features for Test-AzureLocalConnectivity: HEAD-method optimisation (-RequestMethod, default Auto = HEAD with GET fallback), process-isolated parallel fan-out (-Parallelism, default 1 = byte-identical sequential), and cluster-wide fan-out (-Scope Cluster). Get-AzStackHciOsConfigSettings gained the versioned machine-consumable health-summary contract (SchemaVersion 1.0, structured Nodes map + Fingerprints, CheckId + Severity registry, single PASS/WARNING/FAILURE/INFO/SKIPPED vocabulary) and the side-effect-free -HealthSummaryOnly switch. Results always copy to C:\ProgramData\AzStackHci.DiagnosticSettings; a custom -ExportPath was an additional copy target. Per-row MachineName column added.
For full version history (including v0.6.7 detail, v0.6.6 and earlier) see CHANGELOG.md shipped with this module.
FileList
- AzStackHci.DiagnosticSettings.nuspec
- checkpoint-health-policy.example.yml
- GitHub-URI-Cache_2026-08-28\canadacentral-hci-endpoints.md
- GitHub-URI-Cache_2026-08-28\southcentralus-hci-endpoints.md
- GitHub-URI-Cache_2026-08-28\westeurope-hci-endpoints.md
- Private\AzStackHci.ConnectivityCluster.Helpers.ps1
- Private\AzStackHci.HardwareOEM.Helpers.ps1
- Private\AzStackHci.ModuleManagement.Helpers.ps1
- Private\AzStackHci.ParallelLayer7.Helpers.ps1
- Private\AzStackHci.VMCheckpointHealth.Assessment.ps1
- Private\AzStackHci.VMCheckpointHealth.Rendering.ps1
- Public\AzStackHci.ClusterPerformance.ps1
- Public\AzStackHci.MemoryDumpSettings.ps1
- Public\AzStackHci.PrivateLinkScope.ps1
- Public\AzStackHci.VMCheckpointHealth.ps1
- GitHub-URI-Cache_2026-08-28\OEMEndpoints\HitachiAzureLocalEndpoints.md
- AzStackHci.DiagnosticSettings.psd1
- README.md
- GitHub-URI-Cache_2026-08-28\eastus-hci-endpoints.md
- GitHub-URI-Cache_2026-08-28\southeastasia-hci-endpoints.md
- Private\AzStackHci.Artifact.Helpers.ps1
- Private\AzStackHci.Constants.ps1
- Private\AzStackHci.Layer7.Helpers.ps1
- Private\AzStackHci.Network.Helpers.ps1
- Private\AzStackHci.Results.Helpers.ps1
- Private\AzStackHci.VMCheckpointHealth.Collection.ps1
- Private\AzStackHci.VMCheckpointHealth.Storage.ps1
- Public\AzStackHci.ConnectivityTests.ps1
- Public\AzStackHci.OsConfigSettings.ps1
- Public\AzStackHci.SSLInspection.ps1
- GitHub-URI-Cache_2026-08-28\OEMEndpoints\DataOnAzureLocalEndpoints.md
- GitHub-URI-Cache_2026-08-28\OEMEndpoints\HPEAzureLocalEndpoints.md
- AzStackHci.DiagnosticSettings.psm1
- Documentation\Get-AzStackHciVMCheckpointHealth.md
- GitHub-URI-Cache_2026-08-28\IndiaCentral-hci-endpoints.md
- GitHub-URI-Cache_2026-08-28\usgovvirginia-hci-endpoints.md
- Private\AzStackHci.Connectivity.Helpers.ps1
- Private\AzStackHci.DNS.Helpers.ps1
- Private\AzStackHci.MemoryDump.Helpers.ps1
- Private\AzStackHci.OsConfigReport.Helpers.ps1
- Private\AzStackHci.Utility.Helpers.ps1
- Private\AzStackHci.VMCheckpointHealth.Policy.ps1
- Private\AzStackHci.WildcardAndSubdomain.Helpers.ps1
- Public\AzStackHci.DiagnosticArtifacts.ps1
- Public\AzStackHci.PageFileSettings.ps1
- Public\AzStackHci.UserModeCrashDumpSettings.ps1
- GitHub-URI-Cache_2026-08-28\OEMEndpoints\DellAzureLocalEndpoints.md
- GitHub-URI-Cache_2026-08-28\OEMEndpoints\LenovoAzureLocalEndpoints.md
- CHANGELOG.md
- GitHub-URI-Cache_2026-08-28\AustraliaEast-hci-endpoints.md
- GitHub-URI-Cache_2026-08-28\japaneast-hci-endpoints.md
- .signature.p7s