AzLocal.UpdateManagement
0.9.18
PowerShell module to manage Azure Local (formerly Azure Stack HCI) cluster updates using Azure Update Manager APIs. Provides functions to start updates, check update status, list available updates, and monitor update runs.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) Microsoft. All rights reserved.
Package Details
Author(s)
- Neil Bird Microsoft
Tags
Azure AzureLocal AzureStackHCI Updates UpdateManager HCI Automation CICD Pipeline ServiceNow ITSM Incident
Functions
Connect-AzLocalServicePrincipal Start-AzLocalClusterUpdate Invoke-AzLocalFailedUpdateRetry Get-AzLocalClusterUpdateReadiness Get-AzLocalClusterInventory Get-AzLocalClusterInfo Get-AzLocalUpdateSummary Get-AzLocalAvailableUpdates Get-AzLocalUpdateRuns Set-AzLocalClusterUpdateRingTag Invoke-AzLocalFleetOperation Get-AzLocalFleetProgress Test-AzLocalFleetHealthGate Export-AzLocalFleetState Resume-AzLocalFleetUpdate Stop-AzLocalFleetUpdate Test-AzLocalClusterHealth Get-AzLocalFleetStatusData New-AzLocalFleetStatusHtmlReport Test-AzLocalUpdateScheduleAllowed Reset-AzLocalSideloadedTag Get-AzLocalItsmConfig Test-AzLocalItsmConnection New-AzLocalIncident Copy-AzLocalPipelineExample Update-AzLocalPipelineExample Copy-AzLocalItsmSample Get-AzLocalFleetHealthFailures Test-AzLocalApplyUpdatesScheduleCoverage Get-AzLocalUpdateRunFailures Get-AzLocalApplyUpdatesScheduleConfig Resolve-AzLocalCurrentUpdateRing Get-AzLocalApplyUpdatesScheduleNextFirings New-AzLocalApplyUpdatesScheduleConfig Update-AzLocalApplyUpdatesScheduleConfig Get-AzLocalApplyUpdatesScheduleCycleCalendar Get-AzLocalFleetHealthOverview Get-AzLocalLatestSolutionVersion Sync-AzLocalClusterUpdateSummary Get-AzLocalFleetConnectivityStatus New-AzLocalFleetConnectivityStatusSummary Add-AzLocalPipelineVersionBanner Add-AzLocalPipelineSupportFooter Assert-AzLocalAzureSubscriptionAccess Assert-AzLocalPipelineReport Export-AzLocalAuthValidationReport Invoke-AzLocalClusterInventory Set-AzLocalClusterUpdateRingTagFromCsv Export-AzLocalUpdateRunMonitorReport Export-AzLocalFleetUpdateStatusReport Export-AzLocalClusterUpdateReadinessReport Export-AzLocalFleetConnectivityStatusReport Export-AzLocalApplyUpdatesScheduleAudit Export-AzLocalFleetHealthStatusReport Resolve-AzLocalPipelineUpdateRing Export-AzLocalClusterReadinessGateReport Invoke-AzLocalReadinessGatedClusterUpdate Invoke-AzLocalReadinessGatedFailedUpdateRetry Add-AzLocalFailedUpdateRetryHintSummary Add-AzLocalApplyUpdatesStepSummary Add-AzLocalNoReadyClustersStepSummary Invoke-AzLocalItsmTicketingFromArtifact Update-AzLocalSideloadCatalog Resolve-AzLocalSideloadPlan Invoke-AzLocalSideloadUpdate Export-AzLocalSideloadStatusReport Add-AzLocalSideloadStepSummary Get-AzLocalExcludedSubscription Set-AzLocalExcludedSubscription
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## Version 0.9.18 - Follow-up strict-mode hardening after v0.9.17. A live re-run of Update: 3 - Apply Updates showed the failed-update single-retry STILL crashed on one cluster with "The property 'steps' cannot be found on this object" on v0.9.17. Root cause: v0.9.17 guarded the TOP-LEVEL progress.steps read in Format-AzLocalUpdateRun, but the recursive step-tree walkers it calls (Get-DeepestActiveStep, Get-CurrentStepPath, Get-DeepestErrorMessage, and Find-DeepestError inside Get-LastUpdateRunErrorSummary) still read $step.steps/$step.status/$step.name/$step.errorMessage BARE. Under Set-StrictMode -Version Latest (applied by the production entry point Invoke-AzLocalReadinessGatedFailedUpdateRetry), a LEAF step that legitimately omits `steps` made the walker throw and failed the whole cluster. Reproduced live against the affected cluster. All walker reads are now guarded with PSObject.Properties[...]. A broader strict-mode audit also guarded more optional-field bare reads that would throw on a shape omitting the field: Get-AzLocalUpdateSummary (the lastUpdated/lastUpdatedTime and lastChecked/lastCheckedTime ARG-vs-ARM compat pair, plus state/healthState/updateStateProperties); the SBE packageType/additionalProperties reads in Get-AzLocalAvailableUpdates, Get-AzLocalClusterUpdateReadiness and Get-AzLocalFleetStatusData; the HealthCheckResult container read in Get-AzLocalUpdateRunHealthEvidence and Get-AzLocalFleetHealthFailures; and the deepest-step name read in Format-AzLocalUpdateRun. Also new: a Support disclaimer footer (new exported helper Add-AzLocalPipelineSupportFooter, wired as a final if:always() step in all 20 templates) renders at the bottom of every pipeline run summary, plus a matching caveat line on the install-step version banner. Export count 68 -> 69. `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.18'`.
## Version 0.9.17 - PSGallery install-step retry hardened to survive a PROLONGED search-index outage. After a customer hit a PSGallery blip that outlasted the v0.9.16 5-attempt / ~2.5-min window (all 5 attempts failed with "No match was found ... 'AzLocal.UpdateManagement'"), the shared install step in all 20 GitHub Actions + Azure DevOps templates (26 install blocks) now retries up to 25 attempts (~25 min) with the same capped exponential backoff + jitter (10s, 20s, 40s, then a 60s cap). This is ONE uniform mechanism on BOTH platforms - a single long-retry run - deliberately chosen over a self-re-queue so GitHub Actions and Azure DevOps behave identically and no extra permissions (GH 'actions: write' / ADO Queue-builds) are required. ~25 min stays under the ADO 60-min hosted-agent job cap; GitHub-hosted runners have a 6-hour cap. Normal-path behaviour is unchanged (a healthy install returns on the first attempt) and the latest module version is still installed. ALSO in this release: the Update: 3 - Apply Updates step summaries (readiness gate + apply) now open, on scheduled/cron runs, with a banner making it explicit that the targeted UpdateRing(s) are derived from the operator's own apply-updates-schedule.yml (path + current cycle day + matched rings), with the Apply banner recommending Config: 3 - Apply-Updates Schedule Coverage Audit for the full per-day cycle (new Private helper Get-AzLocalApplyScheduleSourceBanner; renders nothing on manual runs); the Apply-Updates "Cluster Readiness" table gains an UpdateRing column after Cluster (plus a matching UpdateRing field on every readiness row / readiness-report.csv); and a Set-StrictMode -Version Latest crash retrying a failed update whose ARM run omits `location` or `progress.steps` (Format-AzLocalUpdateRun, also hardened in Get-AzLocalFleetStatusData + Get-LastUpdateRunErrorSummary) is fixed with PSObject.Properties guards. No public function or export-count change (still 68). `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.17'`.mped to `'0.9.17'`.
## Version 0.9.16 - Pipeline bootstrap hardening (Update: 3 - Apply Updates and every other template). The shared "Install AzLocal.UpdateManagement from PSGallery" step in all 20 GitHub Actions + Azure DevOps templates (26 install blocks) now retries a transient PSGallery search-index blip ("No match was found ... 'AzLocal.UpdateManagement'") up to 5 attempts (was 3) with a CAPPED exponential backoff plus jitter (~10s, 20s, 40s, 60s + 0-4s random) so fanned-out fleet jobs no longer retry in lockstep and a >30s index blip is ridden out. A customer and the internal fleet both hit a run where the module installed cleanly in one job but a sibling job failed all 3 old attempts seconds later (~30s window was too short). The benign "No Clusters Ready" reporting job in apply-updates (GH job no-clusters-ready / ADO stage NoClustersReady) is now non-fatal (continue-on-error / continueOnError): a persistent install blip on a nothing-to-apply run no longer turns a healthy no-op red. Jobs that genuinely need the module still fail hard after the hardened retry. No public function, parameter or export-count change (still 68). `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.16'`.
## Version 0.9.15 - Update: 1 - Assess Update Readiness surfaces two operator-guidance improvements. (1) Clusters that are 'Up to Date' ONLY because the `allowedUpdateVersions` allow-list held back every Ready update now get their own dedicated VISIBLE table ("Up to date - Ready update held by allow-list") plus a labelled "of which held by allow-list" sub-count in the Summary counts - so operators no longer have to expand "All clusters detail" to find them and copy the exact update name/version into `apply-updates-schedule.yml`. New PassThru property `AllowListHeldCount` (a labelled subset of `UpToDateCount`). (2) SBE-prerequisite Not-Ready clusters now carry a manual-action knowledge note explaining that an SBE update is a prerequisite the pipeline cannot apply automatically - operators must review their Hardware OEM provider's documentation and sideload the SBE update onto the cluster. Fixed: Update: 2 - FORCE (break-glass) runs now HONOUR the `allowedUpdateVersions` allow-list. A forced apply on the manual path (`update_ring` supplied, `use_schedule_file=false`) previously resolved an EMPTY allow-list and installed the latest Ready update, silently overriding an operator's per-ring or fleet-wide global version allow-list. `Resolve-AzLocalPipelineUpdateRing` gains a `-ForceImmediateUpdate` switch (new Private helper `Resolve-AzLocalForceAllowList`) that resolves the ring-scoped allow-list (per-ring override beats the global default; `Latest`/no allow-list still means "install the latest Ready update"), so a FORCE run now bypasses ONLY the schedule WINDOW - never the version allow-list - and never changes the operator-selected ring (degrades to latest Ready update with no throw when no schedule file is present). Both `apply-updates` templates forward the existing `force_immediate_update`/`forceImmediateUpdate` input into the resolve-ring step under the same workflow_dispatch / Build.Reason=Manual gating already used by the apply step. Fixed: `docs/cmdlet-reference.md` claimed `Stop-AzLocalFleetUpdate` calls `POST .../updateRuns/{id}/cancel` and `Resume-AzLocalFleetUpdate` calls `POST .../updateRuns/{id}/retry` - both fabricated. `Stop-AzLocalFleetUpdate` makes no Azure call (local state file + in-memory stop flag) and does not cancel in-flight update runs; `Resume-AzLocalFleetUpdate` re-drives clusters via `Invoke-AzLocalFleetOperation` (`PUT .../updateRuns/{id}`). No public function, parameter or export-count change (still 68). `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.15'`.
## Version 0.9.14 - Surface allow-list-suppressed Ready updates in Update: 1 - Assess Update Readiness. When an `allowedUpdateVersions` allow-list filters out every Ready update on a cluster, `Export-AzLocalClusterUpdateReadinessReport` now makes that visible: the "All clusters detail" table adds an `Available Ready updates` column (a lone Ready update renders inline; 2+ collapse behind a `<details>` expander) and the affected row's Status is marked `Up to Date *` with a conditional footnote explaining the cluster is up to date ONLY because the allow-list excluded every Ready update. `Get-AzLocalClusterUpdateReadiness` also emits an allow-list-mismatch console warning per suppressed cluster listing the exact excluded update name/version to copy into the schedule YML. The Select-AzLocalNextUpdateForCluster matcher accepts BOTH the full update `name` and the bare `properties.version`. Pipeline hardening: the shared "Install AzLocal.UpdateManagement from PSGallery" step in all 20 GitHub Actions + Azure DevOps templates now wraps `Install-Module` in a 3-attempt exponential-backoff (10s, 20s) retry so a transient PSGallery lookup blip ("No match was found ... 'AzLocal.UpdateManagement'") no longer fails the run on the first hit. Docs: added a vendor/platform-named OEM SBE example and standardised the `Solution`/`SBE` name form. No public function, parameter or export-count change (still 68). `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.14'`.
## Version 0.9.13 - Bug fix: Monitor: 3 - Fleet Update Status no longer crashes on a failed update run that carries a short deepest-error message. The truncation guard `[string]$f.DeepestErrMsg.Length` parses as `[string]($f.DeepestErrMsg.Length)`, stringifying the LENGTH and comparing it LEXICALLY to 4000, pushing a short string into `.Substring(0,4000)`. Now cast once before the integer length check. `GENERATED_AGAINST_MODULE_VERSION` bumped to `'0.9.13'`.
For full release notes see:
https://github.com/NeilBird/Azure-Local/blob/main/AzLocal.UpdateManagement/CHANGELOG.md
FileList
- AzLocal.UpdateManagement.nuspec
- Private\Test-ExportPathWritable.ps1
- Public\Export-AzLocalAuthValidationReport.ps1
- Public\Get-AzLocalFleetHealthOverview.ps1
- Public\Reset-AzLocalSideloadedTag.ps1
- Automation-Pipeline-Examples\azure-devops\fleet-update-status.yml
- Automation-Pipeline-Examples\github-actions\sideload-updates.yml
- ITSM\ITSM-Connector-Plan.md
- Private\Format-AzLocalIncidentBody.ps1
- Private\Get-AzLocalSideloadAuthMap.ps1
- Private\Invoke-AzLocalRemoteSolutionImport.ps1
- Private\Resolve-AzLocalSideloadTargetPath.ps1
- Private\Write-AzLocalPipelineError.ps1
- Public\Export-AzLocalClusterReadinessGateReport.ps1
- Public\Get-AzLocalFleetProgress.ps1
- Public\Resolve-AzLocalCurrentUpdateRing.ps1
- AzLocal.UpdateManagement.psd1
- Automation-Pipeline-Examples\azure-devops\manage-updatering-tags.yml
- docs\cmdlet-reference.md
- ITSM\README.md
- Private\Format-AzLocalUpdateLastAttemptTagValue.ps1
- Private\Get-AzLocalSideloadCatalog.ps1
- Private\Invoke-AzLocalServiceNowAdapter.ps1
- Private\Resolve-AzLocalUpdateRunDeepestError.ps1
- Private\Write-AzLocalPipelineNotice.ps1
- Public\Export-AzLocalClusterUpdateReadinessReport.ps1
- Public\Get-AzLocalFleetStatusData.ps1
- Public\Resolve-AzLocalPipelineUpdateRing.ps1
- AzLocal.UpdateManagement.psm1
- Automation-Pipeline-Examples\azure-devops\monitor-updates.yml
- docs\concepts.md
- Private\Add-AzLocalPipelineStepSummary.ps1
- Private\Format-AzLocalUpdateRun.ps1
- Private\Get-AzLocalSideloadState.ps1
- Private\Invoke-AzLocalSideloadedAutoReset.ps1
- Private\Resolve-SafeOutputPath.ps1
- Private\Write-AzLocalPipelineWarning.ps1
- Public\Export-AzLocalFleetConnectivityStatusReport.ps1
- Public\Get-AzLocalItsmConfig.ps1
- Public\Resolve-AzLocalSideloadPlan.ps1
- example-update-request.json
- Automation-Pipeline-Examples\azure-devops\setup-validate-and-inventory.yml
- docs\rbac.md
- Private\Convert-AzLocalScheduleSchemaVersion.ps1
- Private\Get-AzLocalApplyScheduleSourceBanner.ps1
- Private\Get-AzLocalSolutionUpdateDownload.ps1
- Private\Invoke-AzLocalSideloadedAutoResetForCluster.ps1
- Private\Resolve-WildcardDate.ps1
- Private\Write-AzLocalUpdateLastAttemptTag.ps1
- Public\Export-AzLocalFleetHealthStatusReport.ps1
- Public\Get-AzLocalLatestSolutionVersion.ps1
- Public\Resume-AzLocalFleetUpdate.ps1
- README.md
- Automation-Pipeline-Examples\azure-devops\sideload-updates.yml
- docs\release-history.md
- Private\Convert-AzLocalSideloadCatalogSchemaVersion.ps1
- Private\Get-AzLocalClusterPortalLink.ps1
- Private\Get-AzLocalStatusIconMap.ps1
- Private\Invoke-AzLocalUpdateApply.ps1
- Private\Resolve-WildcardDateRange.ps1
- Private\Write-Log.ps1
- Public\Export-AzLocalFleetState.ps1
- Public\Get-AzLocalUpdateRunFailures.ps1
- Public\Set-AzLocalClusterUpdateRingTag.ps1
- Automation-Pipeline-Examples\apply-updates-schedule.example.yml
- Automation-Pipeline-Examples\docs\appendix-github-environments.md
- docs\troubleshooting.md
- Private\Convert-AzLocalUpdateWindowToCron.ps1
- Private\Get-AzLocalClusterReadinessStatus.ps1
- Private\Get-AzLocalUpdaterScriptVersion.ps1
- Private\Invoke-AzResourceGraphQuery.ps1
- Private\Select-AzLocalNextUpdateForCluster.ps1
- Private\Write-UpdateCsvLog.ps1
- Public\Export-AzLocalFleetUpdateStatusReport.ps1
- Public\Get-AzLocalUpdateRuns.ps1
- Public\Set-AzLocalClusterUpdateRingTagFromCsv.ps1
- Automation-Pipeline-Examples\azlocal-update-management-custom-role.json
- Automation-Pipeline-Examples\docs\appendix-module-version-pinning.md
- docs\images\apply-updates-schedule-audit-part1.png
- Private\ConvertFrom-AzLocalCronExpression.ps1
- Private\Get-AzLocalClusterUpdateRuns.ps1
- Private\Get-AzLocalUpdateRunHealthEvidence.ps1
- Private\Invoke-AzRestJson.ps1
- Private\Set-AzLocalClusterTagsMerge.ps1
- Private\Write-Utf8NoBomFile.ps1
- Public\Export-AzLocalSideloadStatusReport.ps1
- Public\Get-AzLocalUpdateSummary.ps1
- Public\Set-AzLocalExcludedSubscription.ps1
- Automation-Pipeline-Examples\excluded-subscription-ids.example.csv
- Automation-Pipeline-Examples\docs\appendix-pipelines.md
- docs\images\apply-updates-schedule-audit-part2.png
- Private\ConvertFrom-AzLocalScheduleYaml.ps1
- Private\Get-AzLocalCtrlClickTip.ps1
- Private\Get-AzLocalUpdateRunStepStats.ps1
- Private\Invoke-FleetJobsInParallel.ps1
- Private\Set-AzLocalPipelineOutput.ps1
- Public\Add-AzLocalApplyUpdatesStepSummary.ps1
- Public\Export-AzLocalUpdateRunMonitorReport.ps1
- Public\Invoke-AzLocalClusterInventory.ps1
- Public\Start-AzLocalClusterUpdate.ps1
- Automation-Pipeline-Examples\README.md
- Automation-Pipeline-Examples\docs\appendix-release-history.md
- docs\images\apply-updates-schedule-audit-part3.png
- Private\ConvertFrom-AzLocalUpdateExcluded.ps1
- Private\Get-AzLocalExcludedSubscriptionId.ps1
- Private\Get-CurrentStepPath.ps1
- Private\Invoke-FleetOpClusterAction.ps1
- Private\Test-AzCliAvailable.ps1
- Public\Add-AzLocalFailedUpdateRetryHintSummary.ps1
- Public\Get-AzLocalApplyUpdatesScheduleConfig.ps1
- Public\Invoke-AzLocalFailedUpdateRetry.ps1
- Public\Stop-AzLocalFleetUpdate.ps1
- Automation-Pipeline-Examples\repo-readme-template.md
- Automation-Pipeline-Examples\docs\sideload-robocopy.md
- docs\images\apply-updates-summary.png
- Private\ConvertFrom-AzLocalUpdateExclusion.ps1
- Private\Get-AzLocalItsmDedupeKey.ps1
- Private\Get-DeepestActiveStep.ps1
- Private\New-AzLocalPipelineJUnitXml.ps1
- Private\Test-AzLocalAllowedUpdateVersionsString.ps1
- Public\Add-AzLocalNoReadyClustersStepSummary.ps1
- Public\Get-AzLocalApplyUpdatesScheduleCycleCalendar.ps1
- Public\Invoke-AzLocalFleetOperation.ps1
- Public\Sync-AzLocalClusterUpdateSummary.ps1
- Automation-Pipeline-Examples\sideload-auth-map.example.csv
- Automation-Pipeline-Examples\docs\sideload.md
- docs\images\apply-updates-update-readiness.png
- Private\ConvertFrom-AzLocalUpdateLastAttemptTagValue.ps1
- Private\Get-AzLocalItsmTriggerDecision.ps1
- Private\Get-DeepestErrorMessage.ps1
- Private\New-AzLocalPSRemotingSession.ps1
- Private\Test-AzLocalReadmeReplaceable.ps1
- Public\Add-AzLocalPipelineSupportFooter.ps1
- Public\Get-AzLocalApplyUpdatesScheduleNextFirings.ps1
- Public\Invoke-AzLocalItsmTicketingFromArtifact.ps1
- Public\Test-AzLocalApplyUpdatesScheduleCoverage.ps1
- Automation-Pipeline-Examples\sideload-catalog.example.yml
- Automation-Pipeline-Examples\github-actions\apply-updates-schedule-audit.yml
- docs\images\auth-smoke-test-validate-oidc.png
- Private\ConvertFrom-AzLocalUpdateSideloaded.ps1
- Private\Get-AzLocalModuleRootManifestPath.ps1
- Private\Get-ExportFormat.ps1
- Private\New-AzLocalSubscriptionExclusionKqlClause.ps1
- Private\Test-AzLocalRemoteFileHash.ps1
- Public\Add-AzLocalPipelineVersionBanner.ps1
- Public\Get-AzLocalAvailableUpdates.ps1
- Public\Invoke-AzLocalReadinessGatedClusterUpdate.ps1
- Public\Test-AzLocalClusterHealth.ps1
- Automation-Pipeline-Examples\update-module-and-pipelines.ps1
- Automation-Pipeline-Examples\github-actions\apply-updates.yml
- docs\images\fleet-health-status-part-2.png
- Private\ConvertFrom-AzLocalUpdateWindow.ps1
- Private\Get-AzLocalPipelineCustomiseMarkers.ps1
- Private\Get-HealthCheckFailureSummary.ps1
- Private\Read-AzLocalApplyUpdatesYamlCrons.ps1
- Private\Test-AzLocalUpdateAssessmentStale.ps1
- Public\Assert-AzLocalAzureSubscriptionAccess.ps1
- Public\Get-AzLocalClusterInfo.ps1
- Public\Invoke-AzLocalReadinessGatedFailedUpdateRetry.ps1
- Public\Test-AzLocalFleetHealthGate.ps1
- Automation-Pipeline-Examples\.itsm\azurelocal-itsm.yml
- Automation-Pipeline-Examples\github-actions\assess-update-readiness.yml
- docs\images\fleet-health-status-part1.png
- Private\ConvertTo-AzLocalAdditionalProperties.ps1
- Private\Get-AzLocalPipelineHost.ps1
- Private\Get-LastUpdateRunErrorSummary.ps1
- Private\Register-AzLocalSideloadCopyTask.ps1
- Private\Test-AzLocalUpdateExcludedAllowed.ps1
- Public\Assert-AzLocalPipelineReport.ps1
- Public\Get-AzLocalClusterInventory.ps1
- Public\Invoke-AzLocalSideloadUpdate.ps1
- Public\Test-AzLocalItsmConnection.ps1
- Automation-Pipeline-Examples\.itsm\templates\incident-body.md
- Automation-Pipeline-Examples\github-actions\fleet-connectivity-status.yml
- docs\images\fleet-update-status.png
- Private\ConvertTo-AzLocalUpdateRingKqlFilter.ps1
- Private\Get-AzLocalPipelineId.ps1
- Private\Get-LatestUpdateByYYMM.ps1
- Private\Repair-AzLocalExcludedSubscriptionCsv.ps1
- Private\Test-AzLocalUpdateExclusion.ps1
- Public\Connect-AzLocalServicePrincipal.ps1
- Public\Get-AzLocalClusterUpdateReadiness.ps1
- Public\New-AzLocalApplyUpdatesScheduleConfig.ps1
- Public\Test-AzLocalUpdateScheduleAllowed.ps1
- Automation-Pipeline-Examples\azure-devops\apply-updates-schedule-audit.yml
- Automation-Pipeline-Examples\github-actions\fleet-health-status.yml
- docs\images\github-actions-10-pipelines-view.png
- Private\ConvertTo-SafeCsvCollection.ps1
- Private\Get-AzLocalPipelineManifest.ps1
- Private\Get-TagValue.ps1
- Private\Resolve-AzLocalClusterAllowList.ps1
- Private\Test-AzLocalUpdateRunsInFlight.ps1
- Public\Copy-AzLocalItsmSample.ps1
- Public\Get-AzLocalExcludedSubscription.ps1
- Public\New-AzLocalFleetConnectivityStatusSummary.ps1
- Public\Update-AzLocalApplyUpdatesScheduleConfig.ps1
- Automation-Pipeline-Examples\azure-devops\apply-updates.yml
- Automation-Pipeline-Examples\github-actions\fleet-update-status.yml
- docs\images\inventory-clusters-run-output.png
- Private\ConvertTo-SafeCsvField.ps1
- Private\Get-AzLocalReadmeTemplateVersion.ps1
- Private\Import-AzLocalFleetState.ps1
- Private\Resolve-AzLocalExcludedSubscriptionId.ps1
- Private\Test-AzLocalUpdateSideloadedAllowed.ps1
- Public\Copy-AzLocalPipelineExample.ps1
- Public\Get-AzLocalFleetConnectivityStatus.ps1
- Public\New-AzLocalFleetStatusHtmlReport.ps1
- Public\Update-AzLocalPipelineExample.ps1
- Automation-Pipeline-Examples\azure-devops\assess-update-readiness.yml
- Automation-Pipeline-Examples\github-actions\manage-updatering-tags.yml
- docs\images\monitor-inflight-updates.png
- Private\ConvertTo-ScrubbedCliOutput.ps1
- Private\Get-AzLocalReadyForUpdateRows.ps1
- Private\Install-AzGraphExtension.ps1
- Private\Resolve-AzLocalForceAllowList.ps1
- Private\Test-AzLocalUpdateVersionInProgressMatch.ps1
- Public\Export-AzLocalApplyUpdatesScheduleAudit.ps1
- Public\Get-AzLocalFleetHealthFailures.ps1
- Public\New-AzLocalIncident.ps1
- Public\Update-AzLocalSideloadCatalog.ps1
- Automation-Pipeline-Examples\azure-devops\fleet-connectivity-status.yml
- Automation-Pipeline-Examples\github-actions\monitor-updates.yml
- docs\images\README.md
- Private\Export-ResultsToJUnitXml.ps1
- Private\Get-AzLocalReadyForUpdateTableMarkdown.ps1
- Private\Invoke-AzCliJson.ps1
- Private\Resolve-AzLocalItsmSecret.ps1
- Private\Test-AzLocalUpdateWindow.ps1
- Automation-Pipeline-Examples\azure-devops\fleet-health-status.yml
- Automation-Pipeline-Examples\github-actions\setup-validate-and-inventory.yml
- ITSM\ITSM-Config-Reference.md
- Private\Format-AzLocalDurationHuman.ps1
- Private\Get-AzLocalRunEndTime.ps1
- Private\Invoke-AzLocalItsmHttp.ps1
- Private\Resolve-AzLocalSideloadCredential.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.9.20 | 138 | 7/8/2026 |
| 0.9.19 | 11 | 7/8/2026 |
| 0.9.18 (current version) | 69 | 7/7/2026 |
| 0.9.17 | 16 | 7/7/2026 |
| 0.9.16 | 51 | 7/6/2026 |
| 0.9.15 | 170 | 7/2/2026 |
| 0.9.14 | 19 | 7/2/2026 |
| 0.9.13 | 18 | 7/2/2026 |
| 0.9.12 | 58 | 7/1/2026 |
| 0.9.11 | 89 | 6/29/2026 |
| 0.9.10 | 105 | 6/26/2026 |
| 0.9.1 | 13 | 6/26/2026 |
| 0.9.0 | 52 | 6/25/2026 |
| 0.8.99 | 6 | 6/25/2026 |
| 0.8.98 | 5 | 6/25/2026 |
| 0.8.97 | 35 | 6/24/2026 |
| 0.8.96 | 34 | 6/23/2026 |
| 0.8.95 | 10 | 6/23/2026 |
| 0.8.94 | 107 | 6/19/2026 |
| 0.8.93 | 25 | 6/18/2026 |
| 0.8.92 | 10 | 6/18/2026 |
| 0.8.91 | 13 | 6/18/2026 |
| 0.8.90 | 5 | 6/18/2026 |
| 0.8.89 | 7 | 6/18/2026 |
| 0.8.88 | 41 | 6/17/2026 |
| 0.8.87 | 37 | 6/16/2026 |
| 0.8.86 | 17 | 6/16/2026 |
| 0.8.85 | 6 | 6/16/2026 |
| 0.8.84 | 34 | 6/15/2026 |