使用 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
点击``` 获取到更多
解压缩后是这样一个文件夹
使用脚本导出
通过结合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"