Exchange Online PowerShell V2 使用

微软年初的时候更新了Exchange Online Powershell V2 的版本。因为疫情,我也没关注,毕竟旧版本的脚本还是可以继续运行的。今天刚好有空,h L : q |测试了一下新版本,发现稳定性和速度果然大幅度提高了,回头就把旧版本的脚本给修改了。

下面看看新版本的使用方式。

安装:

#第一行的目的是把安全协议更改为tls1.2, PS5 默认的tls1.0现在已经不支持了,如果直接使用Install-Module会报错
[Net.ServicePointManager]::Sh ? . o E i 3ecurityProtocol = [Net.SecurityProtocolType]y u 7::Tls12
#下面两行是用来安装或者更新PoweH 8 5 p P  ( , drShell Galler_ ] k 3 # 8y的安装模块
Install-Module -Name PowerShellGet -Force
Upy A M F I ldate-MM # _odule -Name PowerShellGet
#下面两行是用来安装或者更新Exchw ( ! tangeOnlineManagemenA J _ 4 i S = Dt模块, 旧版本我们还需要登陆进Exchange Admin去下载,新版本直接可以通过PowerShell Gallery安装了
Install-Module -Name ExchangeOnlineMa/ X i c F m S o ;nagement
Update-Module -Name ExchangeOnlineManagement
#安装完成之后,导V ( 3入查看模块信息
Import-O  hModule Et R u i uxchangeOnlineManagement; Get-Module ExchangeOnlineManar  c . -  - X 2gement

安装完成之后,就l F B B可以直接连接和运行了。比起第一个版本,2.0的版# q t Z本优化了很多。旧版本里面,我们是通过New-PSQ # 5 @ j 3 , n ;Session的方式来实现连接,但是当我使用MFA的情况下,我只能通过间接调用dll文件来操作q t w N M Y Q m,这样子非常的恶心,每次链i L / Y ) X接都需要# P ` W x W z `输入手机验证码,而且非常不稳定,执行脚本超过20分钟就会6 0 r ] :导致PowerShell ISE完全死机。

新版本可以直接通过传递credential链接,非常方便,也很稳定。

可以做个对比,下面是1.0的方式

#MFA Authentication, 能用但V # H } @ 是很不稳定#
Impo; J ( F c T Art-Module $ A L h  5((Get-ChY * Y Q h . ai| { - R a e {ldItem -Pat P t : : # =th $($env:LOCALAPPDATA+"Apps2.0") -Filter Microsoft.Exchange.Management.ExoPowershellModule.dll -Recurse ).FullName|?{$_ -notmatch "_none_"}|select -First 1)
$EXOSession = New-ExoPSSession
Import-Po q s T b d YSSession $EXOSession
#Normal loO { : ? 2 Egin
$Session = New-PSSes9 + A o gsion -ConfigurationName Microsoft.Exchange -ConnS 2 w W }ectionUri https://outlook.officeA  | C B365.com/powershell-liveid/ - Y xCredential $Credential -Authentication Basic -AllowRedirection
Import-PSM =  ( oSession $Session
Connect-MsolService -Credential $credential

下面是2.0的O * g ( 方式,不过我的测试发现,我的MFA管理员账号直接用普通连接方式居然H d /也是工作的

#普通
Connect-ExchangeOnline -Credential $UserCredential -ShowProgress $true
#MFA
Connect-Ex= { p P . / [ 6 !changeOnt - U r 8 ) 3 lline -UserPrincipalName $UPN -ShowProgress $tr? w ! d rue

Exchange Online PowerShell V2 使用

连接效果,感觉利落,对比1.0 时Y ] n间几乎快了一倍,也没一大堆乱七八糟的警告信息

Exchange Online PowerShell V2 使用

最后看看相关命令变化

liExchange Online PowerShell V2 使用

咋一看貌似就是命令前面多了一个EXO,比如从 get-mailbox 变成了 get-exoMailY Y V ~ ?box, 他的内部的参数其实变化了。旧版本的get-mailbox会返回所有的属性,包括大量的空白属性,这些属性X L s J h K I可能使用的机会非常稀少,这样子其实浪费了大量的资源和时间。 新版本里面,他定义了一个东西叫做 Propertyset,也就是把各种常见的属性分成大类L F Z放到一起,我们返回的时候,指定对应的propertyset,就可以获取对应的信息,而不是一股脑的全部返回。

比如

Exchange Online PowerShell V2 使用

虽然看起来改进不多,但是连接和执行效果的优化,真正使用起来感觉爽4 l [快太多了