使用 Microsoft 365 的 CLI 导出所有 Power Automate 流程

640 阅读2分钟

使用 Microsoft 365 的 CLI 导出所有 Power Automate 流程

前情提要:

使用PowerShell复制SharePoint站点文件juejin.cn/post/703848…

使用AzureAD使用非交互方式PNP SharePoint命令 juejin.cn/post/703475…

利用PNP命令 复制列表到其他站点 juejin.cn/post/703392…

PowerShell 脚本 juejin.cn/post/703299…

适用于 Microsoft 365 的 CLI

使用 Microsoft 365 的 CLI,您可以在任何平台上管理您的 Microsoft 365 租户和 SharePoint 框架项目。无论您使用的是 Windows、macOS 还是 Linux,使用 Bash、Cmder 或 PowerShell,使用 Microsoft 365 的 CLI,您都可以配置 Microsoft 365、管理 SharePoint 框架项目和构建自动化脚本。

安装

Microsoft 365 的 CLI 作为 NPM 包分发。要使用它,请使用以下命令全局安装它:

npm i -g @pnp/cli-microsoft365

或使用yarn:

yarn global add @pnp/cli-microsoft365

入门

通过使用以下login命令登录到 Microsoft 365 租户,开始管理它的设置,例如:

m365 login

要使用您的用户名和密码登录 Microsoft 365,请执行:

m365 login --authType password --userName user@contoso.com --password pass@word1

在无法进行交互身份验证的自动化场景中,使用凭据登录 Microsoft 365 非常方便。这种身份验证方式的缺点是,它不允许您使用 Azure AD 提供的任何高级安全功能。例如,如果您的帐户使用多重身份验证,则使用凭据登录 Microsoft 365 将失败。

不同形式的登录

要列出所有可用命令,请在 Microsoft 365 提示的 CLI 中键入help

m365 help

检查安装的版本

要检查您的计算机上安装的 Microsoft 365 的 CLI 版本,请在命令行中执行:

m365 version

不使用脚本命令的导出workflow

image.png

点击``` 获取到更多

image.png

解压缩后是这样一个文件夹

image.png

使用脚本导出

通过结合Microsoft 365和 PowerShell的CLI,我们可以使这项任务变得简单且可重复。

此脚本将获取默认环境中的所有流,并将它们导出为 ZIP 文件以重新导入 Power Automate,并导出为 JSON 文件以作为 Azure 逻辑应用导入 Azure。

//安装M365模块
npm install -g @pnp/cli-microsoft365
//登录
m365 login
//运行以下脚本
Write-Output "Getting environment info..."
$environment = m365 flow environment list --query '[?contains(displayName,`default`)] .name'
​
Write-Output "Getting Flows info..."
$flows = m365 flow list --environment $environment --asAdmin --output json | ConvertFrom-JSON
​
Write-Output "Found $($flows.Count) Flows to export..."$flows | ForEach-Object {
    Write-Output "Exporting as ZIP & JSON... $($_.displayName)"
    $filename = $_.displayName.Replace(" ","")
    $timestamp = Get-Date -Format "yyyymmddhhmmss"
    $exportPath = "$($filename)_$($timestamp)"
    $flowId = $_.Name
    m365 flow export --id $flowId --environment $environment --packageDisplayName $_.displayName --path "$exportPath.zip"
    m365 flow export --id $flowId --environment $environment --format json --path "$exportPath.json"
}
​
Write-Output "Complete"