<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Fabric CLI: Command Your Data Platform Like a Pro in Fabric CLI Gallery</title>
    <link>https://community.fabric.microsoft.com/t5/Fabric-CLI-Gallery/Fabric-CLI-Command-Your-Data-Platform-Like-a-Pro/m-p/5181231#M2</link>
    <description>&lt;H2&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;There's a moment every data engineer knows well: you've got a dozen Fabric workspaces to manage, pipelines to trigger, files to move into OneLake, and deployments to ship — all before standup. Clicking through the Fabric portal is fine for exploration, but when speed, repeatability, and automation matter, you need something sharper.&lt;/P&gt;&lt;P&gt;Meet &lt;STRONG&gt;Fabric CLI&lt;/STRONG&gt; (fab) — Microsoft's official open-source command-line interface for Microsoft Fabric. It brings your entire data platform to the terminal, letting you navigate workspaces, run pipelines, manage items, upload data, and wire everything into CI/CD pipelines — all without touching a browser.&lt;/P&gt;&lt;P&gt;This post covers everything you need to get up and running: what Fabric CLI is, why it matters, how to install it, and real command examples you can use today.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;What Is the Fabric CLI?&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI (fab) is a cross-platform, open-source command-line tool built by Microsoft that gives you direct access to Microsoft Fabric from your terminal. Think of it as a shell that speaks fluent Fabric — it exposes workspaces, lakehouses, pipelines, semantic models, notebooks, and more as a navigable, scriptable file system.&lt;/P&gt;&lt;P&gt;Released as &lt;STRONG&gt;Generally Available (v1.5+)&lt;/STRONG&gt;, it is fully supported for production use and backed by Microsoft's SLA. It works on:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Windows Terminal&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;macOS Terminal&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Linux shells&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GitHub Actions, Azure DevOps Pipelines&lt;/STRONG&gt;, and any CI/CD environment&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;At its core, fab does two things brilliantly: it mirrors familiar shell UX (think ls, cd, cp, rm) applied to Fabric resources, and it exposes automation-ready commands for running and deploying Fabric items at scale.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Why Does Fabric CLI Matter?&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;1. Speed and Efficiency&lt;/H3&gt;&lt;P&gt;Portal navigation is built for discovery. CLI is built for execution. Once you know what you want to do, fab gets you there in a single command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;2. Automation-First Design&lt;/H3&gt;&lt;P&gt;Every fab command works identically in your local terminal and in a CI/CD YAML pipeline. There's no "portal-only" escape hatch — everything is scriptable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;3. DevOps Integration&lt;/H3&gt;&lt;P&gt;Fabric CLI bridges the gap between data engineering and modern DevOps practices. You can trigger pipelines, promote deployments, and manage Git-backed workspaces directly inside your GitHub Actions or Azure DevOps workflows.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;4. Open Source and Extensible&lt;/H3&gt;&lt;P&gt;The CLI is open-source on GitHub (microsoft/fabric-cli), meaning the community can contribute, audit, and extend it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;5. Broad Item Coverage&lt;/H3&gt;&lt;P&gt;Fabric CLI supports a wide range of Fabric item types: Lakehouses, Notebooks, Data Pipelines, Semantic Models, Warehouses, Dataflows, GraphQL APIs, CosmosDB Databases, SQL Databases, Variable Libraries, Copy Jobs, Power BI Reports, and more.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Installation&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI is distributed via PyPI and requires Python 3.8+.&lt;/P&gt;&lt;PRE&gt;pip install ms-fabric-cli&lt;/PRE&gt;&lt;P&gt;Verify your installation:&lt;/P&gt;&lt;PRE&gt;fab --version&lt;/PRE&gt;&lt;P&gt;You should see output like:&lt;/P&gt;&lt;PRE&gt;fab version 1.5.x&lt;/PRE&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;&lt;STRONG&gt;Tip:&lt;/STRONG&gt; If you're using a virtual environment, activate it before installing to keep dependencies clean.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Authentication&lt;/STRONG&gt;&lt;/H2&gt;&lt;H2&gt;Before running any commands, you need to authenticate. Fabric CLI supports three authentication modes.&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Interactive Login (Developer / Local)&lt;/H3&gt;&lt;PRE&gt;fab auth login&lt;/PRE&gt;&lt;P&gt;This opens a browser window for Microsoft Entra ID (Azure AD) sign-in — perfect for day-to-day local use.&lt;/P&gt;&lt;H3&gt;Service Principal (CI/CD / Automation)&lt;/H3&gt;&lt;PRE&gt;fab auth login \
  -u $CLIENT_ID \
  -p $CLIENT_SECRET \
  --tenant $TENANT_ID&lt;/PRE&gt;&lt;P&gt;Use this in GitHub Actions or Azure DevOps secrets for unattended runs.&lt;/P&gt;&lt;H3&gt;Managed Identity (Azure-Hosted Runners)&lt;/H3&gt;&lt;P&gt;When running on an Azure-hosted machine with a managed identity, authentication is handled automatically — no credentials to manage.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Navigating Your Fabric Environment&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI models your Fabric tenant as a navigable file system. If you've used a Unix shell, this will feel immediately natural.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;List All Workspaces&lt;/H3&gt;&lt;PRE&gt;fab ls&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;Sales Analytics.Workspace
Marketing Data.Workspace
Finance Reporting.Workspace
DevOps Sandbox.Workspace&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Explore a Workspace&lt;/H3&gt;&lt;PRE&gt;fab ls "Sales Analytics.Workspace"&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;SalesLakehouse.Lakehouse
DailyIngest.DataPipeline
SalesModel.SemanticModel
SalesReport.Report&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Detailed Listing&lt;/H3&gt;&lt;PRE&gt;fab ls -l "Sales Analytics.Workspace"&lt;/PRE&gt;&lt;PRE&gt;Type              Name                    Modified
----------------- ----------------------- -------------------
Lakehouse         SalesLakehouse          2026-04-28 09:12
DataPipeline      DailyIngest             2026-05-01 14:45
SemanticModel     SalesModel              2026-05-02 08:30
Report            SalesReport             2026-05-02 08:35&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Change Working Context&lt;/H3&gt;&lt;PRE&gt;fab cd "Sales Analytics.Workspace"
fab ls&lt;/PRE&gt;&lt;P&gt;Once you cd into a workspace, all relative paths are scoped to it.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Running Data Pipelines&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;One of the most powerful everyday uses of Fabric CLI is triggering and monitoring Data Pipelines.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Run a Pipeline&lt;/H3&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;Pipeline run started: run_id=abc123
Status: Running...
Status: Succeeded ✓  (elapsed: 4m 32s)&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Run with Input Parameters&lt;/H3&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline" \
  -i '{"param_date": "2026-05-10", "env": "production"}'&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Schedule a Pipeline Run&lt;/H3&gt;&lt;PRE&gt;fab job run-sch DailyIngest.datapipeline \
  --type daily \
  --interval "06:00"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Working with Files and OneLake&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI makes it trivial to move data between your local machine and OneLake storage inside a Lakehouse.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Upload a Local File to OneLake&lt;/H3&gt;&lt;PRE&gt;fab cp ./data/sales_may.csv \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/sales_may.csv"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Download from OneLake to Local&lt;/H3&gt;&lt;PRE&gt;fab cp \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/sales_may.csv" \
  ./local/downloads/&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Sync an Entire Local Folder&lt;/H3&gt;&lt;PRE&gt;fab cp ./reports/ \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/reports/" \
  --recursive&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;List Files Inside a Lakehouse&lt;/H3&gt;&lt;PRE&gt;fab ls "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Managing Workspaces and Items&lt;/STRONG&gt;&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Create a New Workspace&lt;/H3&gt;&lt;PRE&gt;fab mkdir "New Project.Workspace"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Delete an Item&lt;/H3&gt;&lt;PRE&gt;fab rm "Sales Analytics.Workspace/OldPipeline.DataPipeline"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Copy an Item Between Workspaces&lt;/H3&gt;&lt;PRE&gt;fab cp \
  "Sales Analytics.Workspace/SalesReport.Report" \
  "Finance Reporting.Workspace/SalesReport.Report"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Deployment with fab deploy&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Introduced in v1.5, the deploy command enables one-command deployments across environments — perfect for promoting from dev to staging to production.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Simple Deployment&lt;/H3&gt;&lt;PRE&gt;fab deploy \
  --source "DevOps Sandbox.Workspace" \
  --target "Finance Reporting.Workspace"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Deploy with a Config File&lt;/H3&gt;&lt;P&gt;You can define your deployment rules in a deploy.yml:&lt;/P&gt;&lt;PRE&gt;# deploy.yml
source: DevOps Sandbox.Workspace
target: Finance Reporting.Workspace
items:
  - DailyIngest.DataPipeline
  - SalesModel.SemanticModel
  - SalesReport.Report&lt;/PRE&gt;&lt;P&gt;Then run:&lt;/P&gt;&lt;PRE&gt;fab deploy --config deploy.yml&lt;/PRE&gt;&lt;P&gt;This is especially powerful inside CI/CD pipelines — the same command works locally and in automation.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Power BI Scenarios (New in v1.5)&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI v1.5 extended first-class support for Power BI operations.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Rebind a Report to a Different Semantic Model&lt;/H3&gt;&lt;PRE&gt;fab rebind \
  "Finance Reporting.Workspace/SalesReport.Report" \
  --model "Finance Reporting.Workspace/FinanceModel.SemanticModel"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Refresh a Semantic Model&lt;/H3&gt;&lt;PRE&gt;fab refresh \
  "Sales Analytics.Workspace/SalesModel.SemanticModel"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Update Report Properties&lt;/H3&gt;&lt;PRE&gt;fab set \
  "Sales Analytics.Workspace/SalesReport.Report" \
  --property "description" \
  --value "Updated May 2026 sales metrics"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;CI/CD Integration&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Where Fabric CLI truly shines is in automated pipelines. Here's a complete GitHub Actions workflow that authenticates, runs a pipeline, and deploys on merge to main.&lt;/P&gt;&lt;PRE&gt;# .github/workflows/fabric-deploy.yml

name: Fabric Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy-fabric:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install Fabric CLI
        run: pip install ms-fabric-cli

      - name: Authenticate with Service Principal
        run: |
          fab auth login \
            -u ${{ secrets.FABRIC_CLIENT_ID }} \
            -p ${{ secrets.FABRIC_CLIENT_SECRET }} \
            --tenant ${{ secrets.FABRIC_TENANT_ID }}

      - name: Run data ingest pipeline
        run: |
          fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"

      - name: Deploy to Production workspace
        run: |
          fab deploy --config deploy.yml&lt;/PRE&gt;&lt;P&gt;And the equivalent in Azure DevOps Pipelines:&lt;/P&gt;&lt;PRE&gt;# azure-pipelines.yml

trigger:
  branches:
    include:
      - main

pool:
  vmImage: ubuntu-latest

steps:
  - script: pip install ms-fabric-cli
    displayName: Install Fabric CLI

  - script: |
      fab auth login \
        -u $(FABRIC_CLIENT_ID) \
        -p $(FABRIC_CLIENT_SECRET) \
        --tenant $(FABRIC_TENANT_ID)
    displayName: Authenticate

  - script: |
      fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"
    displayName: Run Pipeline

  - script: |
      fab deploy --config deploy.yml
    displayName: Deploy to Production&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Configuration and Debugging&lt;/STRONG&gt;&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Enable Debug Logging&lt;/H3&gt;&lt;P&gt;When something goes wrong, verbose output is your best friend:&lt;/P&gt;&lt;PRE&gt;fab config set debug_enabled true&lt;/PRE&gt;&lt;P&gt;Now all CLI commands will output detailed request/response information.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Set a Default Capacity&lt;/H3&gt;&lt;P&gt;If you're always working against the same capacity, set it once:&lt;/P&gt;&lt;PRE&gt;fab config set default_capacity "My Production Capacity"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Dry-Run Mode&lt;/H3&gt;&lt;P&gt;Preview what a command will do before executing it:&lt;/P&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline" --dry-run&lt;/PRE&gt;&lt;P&gt;This is invaluable for validating automation scripts before they touch production.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Check Current Auth Status&lt;/H3&gt;&lt;PRE&gt;fab auth status&lt;/PRE&gt;&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;&lt;H2&gt;&lt;STRONG&gt;When to Use Fabric CLI vs. the Portal&lt;/STRONG&gt;&lt;/H2&gt;&lt;P class="lia-indent-padding-left-60px"&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The portal and CLI are complementary. Start in the portal when exploring; switch to the CLI when you need speed, repeatability, or automation.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Getting Started Checklist&lt;/STRONG&gt;&lt;/H2&gt;&lt;OL&gt;&lt;LI&gt;pip install ms-fabric-cli — install the CLI&lt;/LI&gt;&lt;LI&gt;fab auth login — authenticate with your Microsoft account&lt;/LI&gt;&lt;LI&gt;fab ls — explore your workspaces&lt;/LI&gt;&lt;LI&gt;fab ls -l "Your Workspace.Workspace" — inspect a workspace in detail&lt;/LI&gt;&lt;LI&gt;fab run "Your Workspace.Workspace/YourPipeline.DataPipeline" — trigger your first pipeline&lt;/LI&gt;&lt;LI&gt;Store credentials as secrets and add fab to your CI/CD pipeline&lt;/LI&gt;&lt;/OL&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Resources&lt;/STRONG&gt;&lt;/H2&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://microsoft.github.io/fabric-cli/" target="_blank" rel="noopener"&gt;Microsoft Fabric CLI Docs&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://github.com/microsoft/fabric-cli" target="_blank" rel="noopener"&gt;GitHub: microsoft/fabric-cli&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://pypi.org/project/ms-fabric-cli/" target="_blank" rel="noopener"&gt;Fabric CLI on PyPI&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://blog.fabric.microsoft.com/en-US/blog/fabric-cli-is-now-generally-available-explore-and-automate-microsoft-fabric-from-your-terminal/" target="_blank" rel="noopener"&gt;Fabric CLI — Generally Available Blog Post&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blogs/Fabric-CLI-v1-5-is-here-Generally-Available/ba-p/5172135" target="_blank" rel="noopener"&gt;Fabric CLI v1.5 Release Notes&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://blog.fabric.microsoft.com/en-US/blog/fabric-cli-in-azure-devops-automation-without-friction-preview/" target="_blank" rel="noopener"&gt;Fabric CLI in Azure DevOps&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/fabric/articles/fabric-command-line-interface" target="_blank" rel="noopener"&gt;Microsoft Learn: Fabric CLI Reference&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 12 May 2026 23:40:27 GMT</pubDate>
    <dc:creator>GauravLZ888</dc:creator>
    <dc:date>2026-05-12T23:40:27Z</dc:date>
    <item>
      <title>Fabric CLI: Command Your Data Platform Like a Pro</title>
      <link>https://community.fabric.microsoft.com/t5/Fabric-CLI-Gallery/Fabric-CLI-Command-Your-Data-Platform-Like-a-Pro/m-p/5181231#M2</link>
      <description>&lt;H2&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;There's a moment every data engineer knows well: you've got a dozen Fabric workspaces to manage, pipelines to trigger, files to move into OneLake, and deployments to ship — all before standup. Clicking through the Fabric portal is fine for exploration, but when speed, repeatability, and automation matter, you need something sharper.&lt;/P&gt;&lt;P&gt;Meet &lt;STRONG&gt;Fabric CLI&lt;/STRONG&gt; (fab) — Microsoft's official open-source command-line interface for Microsoft Fabric. It brings your entire data platform to the terminal, letting you navigate workspaces, run pipelines, manage items, upload data, and wire everything into CI/CD pipelines — all without touching a browser.&lt;/P&gt;&lt;P&gt;This post covers everything you need to get up and running: what Fabric CLI is, why it matters, how to install it, and real command examples you can use today.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;What Is the Fabric CLI?&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI (fab) is a cross-platform, open-source command-line tool built by Microsoft that gives you direct access to Microsoft Fabric from your terminal. Think of it as a shell that speaks fluent Fabric — it exposes workspaces, lakehouses, pipelines, semantic models, notebooks, and more as a navigable, scriptable file system.&lt;/P&gt;&lt;P&gt;Released as &lt;STRONG&gt;Generally Available (v1.5+)&lt;/STRONG&gt;, it is fully supported for production use and backed by Microsoft's SLA. It works on:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Windows Terminal&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;macOS Terminal&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Linux shells&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GitHub Actions, Azure DevOps Pipelines&lt;/STRONG&gt;, and any CI/CD environment&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;At its core, fab does two things brilliantly: it mirrors familiar shell UX (think ls, cd, cp, rm) applied to Fabric resources, and it exposes automation-ready commands for running and deploying Fabric items at scale.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Why Does Fabric CLI Matter?&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;1. Speed and Efficiency&lt;/H3&gt;&lt;P&gt;Portal navigation is built for discovery. CLI is built for execution. Once you know what you want to do, fab gets you there in a single command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;2. Automation-First Design&lt;/H3&gt;&lt;P&gt;Every fab command works identically in your local terminal and in a CI/CD YAML pipeline. There's no "portal-only" escape hatch — everything is scriptable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;3. DevOps Integration&lt;/H3&gt;&lt;P&gt;Fabric CLI bridges the gap between data engineering and modern DevOps practices. You can trigger pipelines, promote deployments, and manage Git-backed workspaces directly inside your GitHub Actions or Azure DevOps workflows.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;4. Open Source and Extensible&lt;/H3&gt;&lt;P&gt;The CLI is open-source on GitHub (microsoft/fabric-cli), meaning the community can contribute, audit, and extend it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;5. Broad Item Coverage&lt;/H3&gt;&lt;P&gt;Fabric CLI supports a wide range of Fabric item types: Lakehouses, Notebooks, Data Pipelines, Semantic Models, Warehouses, Dataflows, GraphQL APIs, CosmosDB Databases, SQL Databases, Variable Libraries, Copy Jobs, Power BI Reports, and more.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Installation&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI is distributed via PyPI and requires Python 3.8+.&lt;/P&gt;&lt;PRE&gt;pip install ms-fabric-cli&lt;/PRE&gt;&lt;P&gt;Verify your installation:&lt;/P&gt;&lt;PRE&gt;fab --version&lt;/PRE&gt;&lt;P&gt;You should see output like:&lt;/P&gt;&lt;PRE&gt;fab version 1.5.x&lt;/PRE&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;&lt;STRONG&gt;Tip:&lt;/STRONG&gt; If you're using a virtual environment, activate it before installing to keep dependencies clean.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Authentication&lt;/STRONG&gt;&lt;/H2&gt;&lt;H2&gt;Before running any commands, you need to authenticate. Fabric CLI supports three authentication modes.&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Interactive Login (Developer / Local)&lt;/H3&gt;&lt;PRE&gt;fab auth login&lt;/PRE&gt;&lt;P&gt;This opens a browser window for Microsoft Entra ID (Azure AD) sign-in — perfect for day-to-day local use.&lt;/P&gt;&lt;H3&gt;Service Principal (CI/CD / Automation)&lt;/H3&gt;&lt;PRE&gt;fab auth login \
  -u $CLIENT_ID \
  -p $CLIENT_SECRET \
  --tenant $TENANT_ID&lt;/PRE&gt;&lt;P&gt;Use this in GitHub Actions or Azure DevOps secrets for unattended runs.&lt;/P&gt;&lt;H3&gt;Managed Identity (Azure-Hosted Runners)&lt;/H3&gt;&lt;P&gt;When running on an Azure-hosted machine with a managed identity, authentication is handled automatically — no credentials to manage.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Navigating Your Fabric Environment&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI models your Fabric tenant as a navigable file system. If you've used a Unix shell, this will feel immediately natural.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;List All Workspaces&lt;/H3&gt;&lt;PRE&gt;fab ls&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;Sales Analytics.Workspace
Marketing Data.Workspace
Finance Reporting.Workspace
DevOps Sandbox.Workspace&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Explore a Workspace&lt;/H3&gt;&lt;PRE&gt;fab ls "Sales Analytics.Workspace"&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;SalesLakehouse.Lakehouse
DailyIngest.DataPipeline
SalesModel.SemanticModel
SalesReport.Report&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Detailed Listing&lt;/H3&gt;&lt;PRE&gt;fab ls -l "Sales Analytics.Workspace"&lt;/PRE&gt;&lt;PRE&gt;Type              Name                    Modified
----------------- ----------------------- -------------------
Lakehouse         SalesLakehouse          2026-04-28 09:12
DataPipeline      DailyIngest             2026-05-01 14:45
SemanticModel     SalesModel              2026-05-02 08:30
Report            SalesReport             2026-05-02 08:35&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Change Working Context&lt;/H3&gt;&lt;PRE&gt;fab cd "Sales Analytics.Workspace"
fab ls&lt;/PRE&gt;&lt;P&gt;Once you cd into a workspace, all relative paths are scoped to it.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Running Data Pipelines&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;One of the most powerful everyday uses of Fabric CLI is triggering and monitoring Data Pipelines.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Run a Pipeline&lt;/H3&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"&lt;/PRE&gt;&lt;P&gt;Output:&lt;/P&gt;&lt;PRE&gt;Pipeline run started: run_id=abc123
Status: Running...
Status: Succeeded ✓  (elapsed: 4m 32s)&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Run with Input Parameters&lt;/H3&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline" \
  -i '{"param_date": "2026-05-10", "env": "production"}'&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Schedule a Pipeline Run&lt;/H3&gt;&lt;PRE&gt;fab job run-sch DailyIngest.datapipeline \
  --type daily \
  --interval "06:00"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Working with Files and OneLake&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI makes it trivial to move data between your local machine and OneLake storage inside a Lakehouse.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Upload a Local File to OneLake&lt;/H3&gt;&lt;PRE&gt;fab cp ./data/sales_may.csv \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/sales_may.csv"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Download from OneLake to Local&lt;/H3&gt;&lt;PRE&gt;fab cp \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/sales_may.csv" \
  ./local/downloads/&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Sync an Entire Local Folder&lt;/H3&gt;&lt;PRE&gt;fab cp ./reports/ \
  "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/reports/" \
  --recursive&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;List Files Inside a Lakehouse&lt;/H3&gt;&lt;PRE&gt;fab ls "Sales Analytics.Workspace/SalesLakehouse.Lakehouse/Files/"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Managing Workspaces and Items&lt;/STRONG&gt;&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Create a New Workspace&lt;/H3&gt;&lt;PRE&gt;fab mkdir "New Project.Workspace"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Delete an Item&lt;/H3&gt;&lt;PRE&gt;fab rm "Sales Analytics.Workspace/OldPipeline.DataPipeline"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Copy an Item Between Workspaces&lt;/H3&gt;&lt;PRE&gt;fab cp \
  "Sales Analytics.Workspace/SalesReport.Report" \
  "Finance Reporting.Workspace/SalesReport.Report"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Deployment with fab deploy&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Introduced in v1.5, the deploy command enables one-command deployments across environments — perfect for promoting from dev to staging to production.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Simple Deployment&lt;/H3&gt;&lt;PRE&gt;fab deploy \
  --source "DevOps Sandbox.Workspace" \
  --target "Finance Reporting.Workspace"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Deploy with a Config File&lt;/H3&gt;&lt;P&gt;You can define your deployment rules in a deploy.yml:&lt;/P&gt;&lt;PRE&gt;# deploy.yml
source: DevOps Sandbox.Workspace
target: Finance Reporting.Workspace
items:
  - DailyIngest.DataPipeline
  - SalesModel.SemanticModel
  - SalesReport.Report&lt;/PRE&gt;&lt;P&gt;Then run:&lt;/P&gt;&lt;PRE&gt;fab deploy --config deploy.yml&lt;/PRE&gt;&lt;P&gt;This is especially powerful inside CI/CD pipelines — the same command works locally and in automation.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Power BI Scenarios (New in v1.5)&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Fabric CLI v1.5 extended first-class support for Power BI operations.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Rebind a Report to a Different Semantic Model&lt;/H3&gt;&lt;PRE&gt;fab rebind \
  "Finance Reporting.Workspace/SalesReport.Report" \
  --model "Finance Reporting.Workspace/FinanceModel.SemanticModel"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Refresh a Semantic Model&lt;/H3&gt;&lt;PRE&gt;fab refresh \
  "Sales Analytics.Workspace/SalesModel.SemanticModel"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Update Report Properties&lt;/H3&gt;&lt;PRE&gt;fab set \
  "Sales Analytics.Workspace/SalesReport.Report" \
  --property "description" \
  --value "Updated May 2026 sales metrics"&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;CI/CD Integration&lt;/STRONG&gt;&lt;/H2&gt;&lt;P&gt;Where Fabric CLI truly shines is in automated pipelines. Here's a complete GitHub Actions workflow that authenticates, runs a pipeline, and deploys on merge to main.&lt;/P&gt;&lt;PRE&gt;# .github/workflows/fabric-deploy.yml

name: Fabric Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy-fabric:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install Fabric CLI
        run: pip install ms-fabric-cli

      - name: Authenticate with Service Principal
        run: |
          fab auth login \
            -u ${{ secrets.FABRIC_CLIENT_ID }} \
            -p ${{ secrets.FABRIC_CLIENT_SECRET }} \
            --tenant ${{ secrets.FABRIC_TENANT_ID }}

      - name: Run data ingest pipeline
        run: |
          fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"

      - name: Deploy to Production workspace
        run: |
          fab deploy --config deploy.yml&lt;/PRE&gt;&lt;P&gt;And the equivalent in Azure DevOps Pipelines:&lt;/P&gt;&lt;PRE&gt;# azure-pipelines.yml

trigger:
  branches:
    include:
      - main

pool:
  vmImage: ubuntu-latest

steps:
  - script: pip install ms-fabric-cli
    displayName: Install Fabric CLI

  - script: |
      fab auth login \
        -u $(FABRIC_CLIENT_ID) \
        -p $(FABRIC_CLIENT_SECRET) \
        --tenant $(FABRIC_TENANT_ID)
    displayName: Authenticate

  - script: |
      fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline"
    displayName: Run Pipeline

  - script: |
      fab deploy --config deploy.yml
    displayName: Deploy to Production&lt;/PRE&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Configuration and Debugging&lt;/STRONG&gt;&lt;/H2&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Enable Debug Logging&lt;/H3&gt;&lt;P&gt;When something goes wrong, verbose output is your best friend:&lt;/P&gt;&lt;PRE&gt;fab config set debug_enabled true&lt;/PRE&gt;&lt;P&gt;Now all CLI commands will output detailed request/response information.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Set a Default Capacity&lt;/H3&gt;&lt;P&gt;If you're always working against the same capacity, set it once:&lt;/P&gt;&lt;PRE&gt;fab config set default_capacity "My Production Capacity"&lt;/PRE&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Dry-Run Mode&lt;/H3&gt;&lt;P&gt;Preview what a command will do before executing it:&lt;/P&gt;&lt;PRE&gt;fab run "Sales Analytics.Workspace/DailyIngest.DataPipeline" --dry-run&lt;/PRE&gt;&lt;P&gt;This is invaluable for validating automation scripts before they touch production.&lt;/P&gt;&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;&lt;H3&gt;Check Current Auth Status&lt;/H3&gt;&lt;PRE&gt;fab auth status&lt;/PRE&gt;&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;&lt;H2&gt;&lt;STRONG&gt;When to Use Fabric CLI vs. the Portal&lt;/STRONG&gt;&lt;/H2&gt;&lt;P class="lia-indent-padding-left-60px"&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The portal and CLI are complementary. Start in the portal when exploring; switch to the CLI when you need speed, repeatability, or automation.&lt;/P&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Getting Started Checklist&lt;/STRONG&gt;&lt;/H2&gt;&lt;OL&gt;&lt;LI&gt;pip install ms-fabric-cli — install the CLI&lt;/LI&gt;&lt;LI&gt;fab auth login — authenticate with your Microsoft account&lt;/LI&gt;&lt;LI&gt;fab ls — explore your workspaces&lt;/LI&gt;&lt;LI&gt;fab ls -l "Your Workspace.Workspace" — inspect a workspace in detail&lt;/LI&gt;&lt;LI&gt;fab run "Your Workspace.Workspace/YourPipeline.DataPipeline" — trigger your first pipeline&lt;/LI&gt;&lt;LI&gt;Store credentials as secrets and add fab to your CI/CD pipeline&lt;/LI&gt;&lt;/OL&gt;&lt;HR /&gt;&lt;H2&gt;&lt;STRONG&gt;Resources&lt;/STRONG&gt;&lt;/H2&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://microsoft.github.io/fabric-cli/" target="_blank" rel="noopener"&gt;Microsoft Fabric CLI Docs&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://github.com/microsoft/fabric-cli" target="_blank" rel="noopener"&gt;GitHub: microsoft/fabric-cli&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://pypi.org/project/ms-fabric-cli/" target="_blank" rel="noopener"&gt;Fabric CLI on PyPI&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://blog.fabric.microsoft.com/en-US/blog/fabric-cli-is-now-generally-available-explore-and-automate-microsoft-fabric-from-your-terminal/" target="_blank" rel="noopener"&gt;Fabric CLI — Generally Available Blog Post&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blogs/Fabric-CLI-v1-5-is-here-Generally-Available/ba-p/5172135" target="_blank" rel="noopener"&gt;Fabric CLI v1.5 Release Notes&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://blog.fabric.microsoft.com/en-US/blog/fabric-cli-in-azure-devops-automation-without-friction-preview/" target="_blank" rel="noopener"&gt;Fabric CLI in Azure DevOps&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/fabric/articles/fabric-command-line-interface" target="_blank" rel="noopener"&gt;Microsoft Learn: Fabric CLI Reference&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 May 2026 23:40:27 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Fabric-CLI-Gallery/Fabric-CLI-Command-Your-Data-Platform-Like-a-Pro/m-p/5181231#M2</guid>
      <dc:creator>GauravLZ888</dc:creator>
      <dc:date>2026-05-12T23:40:27Z</dc:date>
    </item>
  </channel>
</rss>

