Skip to content

Add Start-FinOpsMultitool cmdlet — interactive GUI for tenant-wide FinOps scanning#2155

Draft
z-larsen wants to merge 1 commit into
microsoft:devfrom
z-larsen:feature/finops-multitool
Draft

Add Start-FinOpsMultitool cmdlet — interactive GUI for tenant-wide FinOps scanning#2155
z-larsen wants to merge 1 commit into
microsoft:devfrom
z-larsen:feature/finops-multitool

Conversation

@z-larsen
Copy link
Copy Markdown

… GUI

Adds the Azure FinOps Multitool as a new PowerShell cmdlet in the FinOps toolkit. The Multitool is a WPF-based GUI that scans an Azure tenant for cost optimization, governance, and FinOps insights including cost trends, orphaned resources, idle VMs, tag hygiene, reservation/savings plan utilization, AHB opportunities, budgets, anomaly alerts, and policy compliance.

  • Public/Start-FinOpsMultitool.ps1: thin launcher cmdlet with comment-based help

  • Private/FinOpsMultitool/: full implementation (24 scanner modules, WPF GUI, Power BI template)

  • Tests/Unit/Start-FinOpsMultitool.Tests.ps1: Pester unit tests

Windows-only (requires WPF support).

🛠️ Description

Adds the Azure FinOps Multitool as a new Start-FinOpsMultitool PowerShell cmdlet in the FinOps toolkit. This was discussed with @MSBrett, who suggested contributing the tool into the official toolkit.

The Multitool is a WPF-based GUI that scans an Azure tenant for cost optimization, governance, and FinOps insights:

  • Cost analysis — trends, per-resource costs, cost-by-tag breakdowns
  • Optimization — orphaned resources, idle VMs, storage tier advice, Azure Hybrid Benefit opportunities
  • Commitments — reservation and savings plan utilization, reservation purchase advice, savings realized
  • Governance — tag inventory and recommendations, policy inventory and recommendations, budget status, anomaly alerts
  • Structure — tenant hierarchy, billing structure, contract info

Results are displayed in an interactive dashboard with export options for Excel, CSV, JSON, and Power BI.

Files added

Path Purpose
src/powershell/Public/Start-FinOpsMultitool.ps1 Public cmdlet — thin launcher with comment-based help
src/powershell/Private/FinOpsMultitool/Start-FinOpsMultitool.ps1 Main WPF application (~4,800 lines)
src/powershell/Private/FinOpsMultitool/modules/ 24 modular scanner files (one per scan category)
src/powershell/Private/FinOpsMultitool/gui/ WPF XAML, app icon, Power BI template
src/powershell/Private/FinOpsMultitool/LICENSE MIT license
src/powershell/Tests/Unit/Start-FinOpsMultitool.Tests.ps1 Pester unit tests

Platform: Windows-only — requires WPF support. The public cmdlet validates the platform and returns a clear error on Linux/macOS.

📷 Screenshots

Screenshots of the Multitool GUI available in the public repo README.

📋 Checklist

🔬 How did you test this change?

  • 🤏 Lint tests
  • 🤞 PS -WhatIf / az validate
  • 👍 Manually deployed + verified
  • 💪 Unit tests
  • 🙌 Integration tests

📦 Deploy to test?

N/A — this is a standalone PowerShell GUI tool, not a template deployment.

🙋‍♀️ Do any of the following that apply?

  • 🚨 This is a breaking change.
  • 🤏 The change is less than 20 lines of code.

📑 Did you update docs/changelog.md?

  • ✅ Updated changelog (required for dev PRs)
  • ➡️ Will add log in a future PR (feature branch PRs only)
  • ❎ Log not needed (small/internal change)

📖 Did you update documentation?

  • ✅ Public docs in docs (required for dev)
  • ✅ Public docs in docs-mslearn (required for dev)
  • ✅ Internal dev docs in docs-wiki (required for dev)
  • ✅ Internal dev docs in src (required for dev)
  • ➡️ Will add docs in a future PR (feature branch PRs only)
  • ❎ Docs not needed (small/internal change)

… GUI

Adds the Azure FinOps Multitool as a new PowerShell cmdlet in the FinOps toolkit. The Multitool is a WPF-based GUI that scans an Azure tenant for cost optimization, governance, and FinOps insights including cost trends, orphaned resources, idle VMs, tag hygiene, reservation/savings plan utilization, AHB opportunities, budgets, anomaly alerts, and policy compliance.

- Public/Start-FinOpsMultitool.ps1: thin launcher cmdlet with comment-based help

- Private/FinOpsMultitool/: full implementation (24 scanner modules, WPF GUI, Power BI template)

- Tests/Unit/Start-FinOpsMultitool.Tests.ps1: Pester unit tests

Windows-only (requires WPF support).
@microsoft-github-policy-service microsoft-github-policy-service Bot added the Needs: Documentation 📝 PR needs a changelog entry, public docs, or internal docs before it can be closed label May 19, 2026
@microsoft-github-policy-service
Copy link
Copy Markdown

@@z-larsen, I noticed you said you would update the changelog in a future PR, but this PR is going into the dev branch. All dev branch PRs must have changelog entries to be ready for the next release. Either update the PR to target a feature branch or add a changelog entry to this PR.

@microsoft-github-policy-service
Copy link
Copy Markdown

@@z-larsen, I noticed you said you would update documentation in a future PR, but this PR is going into the dev branch. All dev branch PRs must have applicable documentation updated to be ready for the next release. Either update the PR to target a feature branch or update the documentation in this PR.

@z-larsen
Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

@flanakin
Copy link
Copy Markdown
Collaborator

@z-larsen This is exciting! I don't know much about the tool, but would love to learn more. Can you join us at the contributor sync next Wednesday to share?

https://aka.ms/ftk/contrib-sync

@z-larsen
Copy link
Copy Markdown
Author

Thanks, Michael! Would love to join.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Documentation 📝 PR needs a changelog entry, public docs, or internal docs before it can be closed Needs: Review 👀 PR that is ready to be reviewed Tool: PowerShell PowerShell scripts and automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants