内容
# OpenGateSP
[](https://github.com/sameer-zahir/opengatesp/actions/workflows/ci.yml)
[](https://github.com/sameer-zahir/opengatesp/releases/latest)
[](LICENSE)

> **免费、开源的 ShareGate 替代品**,适用于 SharePoint Online 和 Microsoft 365 — **迁移** 文件共享到 SharePoint,**预检查** 源文件在移动前,**审计** 权限和外部共享,**配置** 站点,以及 **计划** 管理报告。一个主题化的 Windows 应用,一个 PowerShell 引擎,以及一个 MCP 服务器,让您的 AI 助手可以驱动它。MIT 许可。

## 安装
**最简单 — 安装程序。** [下载 `OpenGateSP-Setup.exe`](https://github.com/sameer-zahir/opengatesp/releases/latest) 并双击它。它按用户安装(无需管理员权限),创建 **开始菜单 + 桌面快捷方式**,并注册一个卸载程序 — 就像任何正常的应用一样。第一次启动时会显示一次性(免费)的 Entra 应用注册,然后打开应用。
**便携 — 无需安装。** 喜欢将其放在文件夹中?下载 `.zip`,解压,并运行 `OpenGateSP.exe`(或 `Start-OpenGateSP.cmd`)。
> 需要 **Windows + PowerShell 7.4+** (安装程序会在缺少时提示您)。当前版本是 *未签名* 的,因此 Windows SmartScreen 会显示一次 **"更多信息 → 运行任何方式"** — 免费开源签名(SignPath)正在进行中,以删除它,并且 `winget install` 即将推出。
## OpenGateSP vs ShareGate
ShareGate 是一个精致、昂贵的工具,最终归结为 SharePoint API 调用,任何人都可以编写脚本。OpenGateSP 以免费、开源的 PowerShell 完成同样的工作,您可以阅读和运行它。 它是一个独立的项目,从头开始构建于 [PnP PowerShell](https://pnp.github.io/powershell/) — 与 ShareGate 无关。
| | ShareGate | OpenGateSP |
|---|---|---|
| **价格** | 数千元每年 | **免费(MIT)** |
| 文件共享 / 文件夹 → SharePoint 迁移 | ✅ | ✅ |
| 迁移前就绪性检查 | ✅ | ✅ |
| 权限和外部共享审计 | ✅ | ✅ |
| 站点配置 + CSV 批量元数据 | ✅ | ✅ |
| 计划治理报告 | ✅ | ✅ |
| 源 **探索** / 迁移前评估 | ✅ | ✅ |
| 迁移后验证(比较) | ✅ | ✅ |
| 租户到租户,Teams,Groups 和 Planner | ✅ | ✅ |
| 修复(签入,修剪版本,修复继承) | ✅ | ✅ |
| 由 AI 助手(MCP)驱动 | — | **✅ 内置** |
| 可阅读、复刻和拥有的开源代码 | — | **✅** |
| 完整的版本历史保真度 | ✅ | 尽力而为 |
OpenGateSP 现已涵盖源 **探索**,相同和跨租户复制,迁移后验证,治理和修复 — ShareGate 表面的大部分,免费且可脚本化。 剩余的差距:完整的版本历史保真度(尽力而为,需要 SharePoint 迁移 API)和 ShareGate Protect 的 SaaS 治理自动化。
## 浅色和深色,内置
GUI 默认采用干净的 **Microsoft Fluent** 样式浅色主题,Fluent 深色和温暖的 **Gruvbox** / 深色 **Tokyo Night Moon** ([Squintless](https://github.com/sameer-zahir/squintless)) 主题在选择器中只需一键即可切换。
导航按迁移运行手册分组 — **迁移 · 活动 · 治理** — 并且 **复制** 打开一个引导式 *"您想复制什么?"* 选择器,进入一个 breadcrumb 向导(源 → 目标 → 范围 → 选项 → 预览和运行),在写入之前进行预览,因此第一次使用不会迷路。 整个视觉系统 — 令牌,组件,向导模式和它背后的界面原则 — 记录在 [docs/design-system.md](docs/design-system.md) 中以便在此基础上构建。 **设置** 齿轮,**首次运行引导** (引导 Entra 设置),导航图标, toast 消息和键盘快捷键完善了感觉;安装程序提供设置 PowerShell 7 和应用检查更新。

## 它能做什么(v0.10.0)
| 区域 | 功能 | 它能做什么 |
|---|---|---|
| **迁移** | `Test-SPMigrationReadiness` | 为 SharePoint 阻止程序(非法名称,路径过长,文件过大/空文件)进行预检本地文件夹。本地,只读。 |
| | `Start-SPFileMigration` | 本地文件共享 / 文件夹 → SharePoint 库,保留结构 + 时间戳。默认干运行。 |
| | `Copy-SPSite` | 复制站点的结构(列表,库,列,视图)和可选地将其内容复制到 **同一租户** 中的另一个站点。默认干运行。 ([docs/07](docs/07-sharepoint-migration.md))。 |
| | `Copy-SPPermissions` | 将角色分配复制到另一个站点,通过映射 CSV 或域交换重新映射用户/组。默认干运行。 |
| | `Copy-SPSite -CrossTenant` | 将站点复制到 **不同租户** (文件通过下载/上传,主体重新映射)。使用 `New-SPMigrationConnection` + `Copy-SPTermGroup`。 |
| | `Compare-SPSite` | 迁移后验证 — 差异目标与源(列表,项目/文件计数)。 |
| **探索** | `Invoke-SPExplore` | 只读 **源评估**:检出文件,大文件,外部共享,孤立用户,工作流 — 分级错误/警告。 |
| | `Get-SPCheckedOutFiles` · `Get-SPLargeFiles` · `Get-SPVersionHistoryReport` · `Get-SPInactiveSites` · `Get-SPContentInsights` · `Get-SPWorkflowReport` | Explore 背后的单独发现报告。 |
| **修复** | `Invoke-SPCheckIn` · `Clear-SPVersionHistory` · `Restore-SPInheritance` · `Remove-SPOrphanedUsers` | 修复 Explore 发现的内容。默认干运行。 ([docs/11](docs/11-remediation.md))。 |
| **协作** | `Copy-SPM365Group` | 克隆 Microsoft 365 组(描述 + 属主/成员列表) |
| | `Copy-SPTeam` | 克隆 Team(通道 + 成员) |
| | `Copy-SPPlannerPlan` | 在组上重新创建 Planner 计划(桶 + 任务) |
| **报告** | `Get-SPSiteInventory` | 租户范围的站点 + 存储 + 最后活动 |
| | `Get-SPPermissionReport` | 谁有权访问;哪里继承被破坏 |
| | `Get-SPSharingReport` | 外部用户和共享链接 |
| | `Get-SPPermissionsMatrix` | 按主体访问矩阵 — 谁可以触摸什么 |
| | `Get-SPOrphanedUsers` | 访问不再在目录中的用户(过时访问) |
| | `Set-SPSiteLifecycle` | 锁定 / 存档(只读)/ 解锁站点 |
| **配置** | `New-SPSiteFromTemplate` | 从模板创建站点或库 |
| | `Set-SPBulkMetadata` | CSV 驱动的批量列更新 |
| **计划** | `Run-GovernanceReport.ps1` | 不受监督的共享/权限 CSV 文件在每日/每周任务上 ([docs/06](docs/06-scheduled-reports.md))。 |
同一个引擎,有三种使用方式:**GUI**,**PowerShell** 模块或 **MCP 服务器**。
## 由 AI 助手驱动
[MCP 服务器](mcp-server/) 让 Claude / Codex / Gemini 以对话式运行 OpenGateSP — *"在 /sites/Marketing 上显示外部共享"*, *"预览将 C:\Shares\HR 迁移到 HR 站点。"* 编写工具默认预览。设置: [mcp-server/README.md](mcp-server/README.md)。
## 更喜欢 CLI?
```powershell
Install-Module PnP.PowerShell -Scope CurrentUser
Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "OpenGateSP" -Tenant contoso.onmicrosoft.com
Import-Module ./module/OpenGateSP/OpenGateSP.psd1
Connect-SPTool -Url https://contoso.sharepoint.com -ClientId <id> -Tenant contoso.onmicrosoft.com -SaveConfig
Get-SPSharingReport -SiteUrl https://contoso.sharepoint.com/sites/Marketing
```
完整指南: [docs/03-quickstart.md](docs/03-quickstart.md) · 设置: [docs/01](docs/01-prerequisites.md), [docs/02](docs/02-entra-app-registration.md),无头/计划: [docs/05](docs/05-app-only-auth.md)。
## 安全
- **委托身份验证** — 工具永远不会超过您自己的 SharePoint 权限。 **仅应用证书** 身份验证([docs/05](docs/05-app-only-auth.md))用于无头/计划运行。
- **写入操作谨慎** — 迁移,批量元数据和配置支持 `-WhatIf`/`-Confirm`,MCP 工具默认预览。 **在生产前测试一个临时站点**。
- 默认设置中没有客户端密钥,因此没有什么秘密可泄露。
## 路线图
第 1-5 阶段(同租户复制,权限/身份映射,租户到租户,Teams/Groups/Planner,治理)以及 **探索** + 迁移后验证(0.7.0)和 **修复** + 迁移保真度(0.8.0)已经发布。 下一步:完整的版本历史保真度(迁移 API),ShareGate-Protect 样式的治理自动化,PowerShell Gallery 发布。 查看 [docs/roadmap.md](docs/roadmap.md) 和 [docs/TESTING.md](docs/TESTING.md)。
## 许可证
[MIT](LICENSE).
<sub>OpenGateSP 是一个独立的开源项目,与 ShareGate 或 Workleap 无关。“ShareGate” 是其各自所有者的商标。</sub>