当前位置: 首页 > news >正文

为什么Remote PowerShell正在被淘汰:理解Exchange V3模块的REST API连接迁移(office-docs-powershell)

为什么Remote PowerShell正在被淘汰:理解Exchange V3模块的REST API连接迁移(office-docs-powershell)

【免费下载链接】office-docs-powershellPowerShell Reference for Office Products - Short URL: aka.ms/office-powershell项目地址: https://gitcode.com/gh_mirrors/of/office-docs-powershell

本文基于官方文档库 office-docs-powershell(Office PowerShell Reference),帮助你彻底理解Remote PowerShell 连接方式正在被淘汰的原因,以及 Exchange Online PowerShell 如何通过Exchange Online PowerShell V3 模块(EXO V3 模块)迁移到REST API 连接。无论你是 Exchange 管理员还是运维脚本开发者,这条迁移路线都直接决定你的脚本还能不能跑、连接还安不安全。只需 5 分钟,带你完成从原理到实操的完整理解。

为什么 Remote PowerShell 正在被淘汰?

过去连接 Exchange Online PowerShell,标准姿势是通过 WinRM 建立一条远程 PowerShell 会话。这套老方案有三个绕不开的短板:

短板具体表现
🔒 安全性差依赖客户端 WinRM 开启 Basic 认证头来传输 OAuth 令牌,属于最弱的连接方式
🐢 性能低每次连接都要在客户端搭建 PowerShell runspace(运行空间),开销大、启动慢
⚡ 可靠性弱网络抖动、大查询耗时长时容易失败,没有内置重试机制

正因如此,微软先后发布了弃用公告:Exchange Online PowerShell 的 Remote PowerShell(RPS)协议于 2022 年 12 月宣布结束支持,Security & Compliance PowerShell 的 RPS 协议于 2023 年 5 月跟进公告。换句话说,Basic 认证(远程 PowerShell)连接已经成为历史,官方文档中相关章节也只保留作历史参考。

REST API 连接:安全、可靠、性能的三维升级

EXO V3 模块(3.0.0 及更高版本)带来了根本性改变:所有 cmdlet 都改由 REST API 直接驱动,不再建立远程 PowerShell 会话。官方对三种连接方式的对比如下:

维度Remote PowerShell cmdletsGet-EXO* cmdletsREST API cmdlets
安全性最弱
性能
可靠性最弱
功能完整度全部参数和输出属性部分参数和属性全部参数和属性

对普通用户来说,最省心的一点是:REST API 的 cmdlet 名称和参数与原来完全一致,你旧脚本里的Get-MailboxSet-TransportRule等命令基本无需改动,换个模块版本就能继续用。

快速上手:3 步完成 Exchange V3 模块迁移

第 1 步:安装或更新模块

从 PowerShell Gallery 安装最新版本的 ExchangeOnlineManagement 模块即可(Windows 上 REST API 连接还需要 PowerShellGet 与 PackageManagement 模块):

Install-Module -Name ExchangeOnlineManagement

第 2 步:使用现代身份验证连接

Connect-ExchangeOnline -UserPrincipalName admin@contoso.com

弹出登录窗口输入密码(启用 MFA 的账户完成多因素验证)即可完成连接,全程不需要再折腾 WinRM 配置。

第 3 步:确认连接类型

REST API 连接不会出现在传统的Get-PSSession里,应改用模块自带的Get-ConnectionInformationcmdlet 查看:

Get-ConnectionInformation

看到返回的连接信息对象,就说明你已经跑在 REST API 通道上了。完整的连接细节可参考官方文档 connect-to-exchange-online-powershell.md。

迁移后必知的 4 个坑

1. Invoke-Command 不再工作

很多老脚本习惯用Invoke-Command -Session $Session -ScriptBlock {...}指定远程会话执行命令,它在 REST API 连接中完全不可用。好消息是多数场景可以简化为直接运行 cmdlet,官方文档按场景给出了完整的替代写法,见 invoke-command-workarounds-rest-api.md。

2. 多连接管理换一套命令

同一窗口开多个连接时,以前靠Get-PSSession区分,现在改用Connect-ExchangeOnlinePrefix参数(如-Prefix C1-Prefix C2),再配合Get-ConnectionInformation筛选,即可分别操作不同连接。

3. 批量操作注意 15 分钟超时

REST API 命令有 15 分钟超时限制。例如一次性向万人邮件组更新成员可能超时,建议拆成Update-DistributionGroupMember处理前 5000 个、再用循环逐个Add-DistributionGroupMember补齐剩余成员。

4. 善用 Get-EXO* 加速命令

模块内置 9 个Get-EXO*专属 cmdlet(如 Get-EXOMailbox、Get-EXORecipient),配合PropertySets属性集按需取数,在批量拉取成千上万条数据时速度优势明显,详见 cmdlet-property-sets.md 与 filters-v2.md。

免密码自动化:App-only 认证与托管标识

REST API 连接还解锁了一个老方案做不到的能力——无值守脚本安全运行。过去后台任务只能把账号密码存本地,风险极高;现在有两种推荐做法:

  • App-only 认证(证书认证):在 Microsoft Entra 中注册应用、上传证书并分配目录角色,脚本即可用证书令牌静默连接,全程无需人工登录。
  • Azure 托管标识:脚本跑在 Azure 自动化账户或 VM 上时,直接Connect-ExchangeOnline -ManagedIdentity -Organization yourdomain.onmicrosoft.com,连证书都不用管理。

注册应用的操作界面如下(Exchange Online PowerShell REST API 迁移中的 App-only 认证配置):

证书上传成功后,界面会显示绿色对勾确认(Exchange V3 模块证书认证配置完成):

最后一步,把应用分配到对应的管理员角色,认证通过后 cmdlet 权限即按 RBAC 生效(Remote PowerShell 到 REST API 迁移后的角色分配):

若在 Azure 自动化中使用托管标识,可先记下自动化账户的资源 ID,供后续配置授权参考(Azure 托管标识连接 Exchange PowerShell 的入口):

完整的配置步骤分别见 app-only-auth-powershell-v2.md 和 connect-exo-powershell-managed-identity.md。

延伸阅读:去哪看完整官方文档

本文所有结论均出自本仓库的官方文档,核心文件路径如下:

  • V3 模块总览与 REST API 连接详解:exchange-online-powershell-v2.md
  • 版本更新日志(各版本新增能力一览):whats-new-in-the-exo-module.md
  • 连接操作指南:connect-to-exchange-online-powershell.md
  • 连接与认证 cmdlet 参考:Connect-ExchangeOnline.md、Get-ConnectionInformation.md

如需查阅全部文档源码,可以克隆本仓库:

git clone https://gitcode.com/gh_mirrors/of/office-docs-powershell

概念性文档集中在 exchange/docs-conceptual/ 目录,各 cmdlet 的参数级参考文档在 exchange/exchange-ps/exchange/ 目录,迁移遇到问题时按图索骥即可。

【免费下载链接】office-docs-powershellPowerShell Reference for Office Products - Short URL: aka.ms/office-powershell项目地址: https://gitcode.com/gh_mirrors/of/office-docs-powershell

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4158205.html

相关文章:

  • 053、VLA模型的训练数据与配比:互联网数据与机器人数据的融合
  • 3步备份QQ空间全部历史说说:GetQzonehistory 完整上手指南
  • QuickLook 插件选型指南:macOS 空格键预览只装这几组才真正用得上
  • PCSX2 Gamefixes与PNACH作弊码完全指南:解决闪退卡顿并解锁60帧
  • Engauge Digitizer 入门指南:从图表图像提取数据点的安装配置全流程
  • CSWin Transformer预训练权重怎么选:Tiny/Small/Base/Large六种模型参数与FLOPs全对比(附选型建议)
  • 如何快速给 Unity WebGL 加上原生输入框:WebGLInput 完整上手指南
  • Oracle APEX Blueprints实战:AI驱动的规范开发,从需求文档一键生成应用
  • EntityFrameworkCore.Triggered性能开销到底有多大?完整基准测试数据解读
  • 132、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从运动矢量置信度到混合权重的工程调优
  • 使用vminpoly前必知的5个注意事项:常见坑与浏览器兼容清单
  • 扩展 D-Zone:接入 Slack 等新聊天平台的开发者进阶指南
  • 潍坊全家电维修服务指南-欧米到家常见故障、服务范围与预约报修
  • SillyTavern-Launcher:一条命令装好 AI 应用全家桶|从零跑通完整指南
  • 安卓7.0 开机动画和launcher之间的黑屏...如何解决?
  • R2CNN_Faster-RCNN_Tensorflow网络架构深度剖析:ResNet+RPN双路旋转检测的TensorFlow实现原理
  • ThriftPy2协议层深度解析:Binary、Compact、JSON协议全对比与选型建议
  • 基于BERT的情感分析实战:从Hugging Face微调到生产部署全流程
  • 中文AI绘图神器ComfyUI-Kolors-MZ:为什么它能让快手Kolors在ComfyUI原生采样?完整概览
  • YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序
  • Apktool APK 逆向完整指南:如何快速解码与重打包一个 Android 应用
  • Vue 文档编辑器快速上手指南:如何把 Vue 应用变成 A4 纸式的在线文档
  • 无界 Wujie 微前端实战:三步接入、三种模式与高频坑的完整指南
  • IP地址与子网掩码深度解析:从原理到实战的网络配置指南
  • Numa Balancing 入门
  • kaml快速开始:data class与YAML双向转换,4个实战例子讲清核心用法
  • OBS RTSP 服务器搭建:5分钟装好 obs-rtspserver 插件并出流
  • MobaXterm Keygen 快速上手:3 步生成专业版许可证文件
  • 拆解Orbit区块链交易调查工具核心代码:ranker排行算法、getNew去重与pageLimit分页机制详解
  • 现货电价API接入最佳实践:日前电价、实时电价、节点电价和96点数据