如何使用PowerShell批量删除Office 365的用户

时间:2022-09-21 05:54:18

概述

本文将演示如何在必要的时候(例如在测试环境),通过PowerShell脚本批量删除Office 365的用户,首先需要通过Get-MsolUser的命令(并且配合筛选条件)获取到符合条件的用户列表,然后通过Remove-MsolUser的命令将其删除。


注意,删除操作会将用户放入到回收站,你还可以从回收站中对其进行恢复。但是要恢复相关的邮件,以及OneDrive网站等个人相关数据,可能还需要一定的时间。请慎重操作。


前提

要想运行如上提到的两个命令,需要在Windows 10的机器上面,安装如下的几个组件

1. 下载安装官方提供的Microsoft Online Service Sign-in Assistant for IT Professionals https://go.microsoft.com/fwlink/p/?LinkId=286152

2. 下载安装官方提供的Azure Active Directory Connection http://connect.microsoft.com/site1164/Downloads/DownloadDetails.aspx?DownloadID=59185

3.  请在本地用管理员身份打开PowerShell,并运行命令 Install-Module -Name AzureAD


进行后续操作之前,需要准备好Office 365 管理员账号,并且连接上MsolService,如下图所示

如何使用PowerShell批量删除Office 365的用户

操作

首先,我们来看一下Get-MsolUser这个命令

https://docs.microsoft.com/en-us/powershell/module/msonline/get-msoluser?view=azureadps-1.0 

这里的关键在于如何过滤出来我们想要操作的用户,这个命令带有几个有趣的参数

[-City <String>] [-Country <String>] [-Department <String>] [-DomainName <String>] [-EnabledFilter <UserEnabledFilter>][-SearchString <String>]

这些参数都可以用来作为过滤的条件,而且这个过滤是在服务器端发生的。


需要注意的是SearchString,只支持简单的模糊匹配,它会在displayname和alias中做匹配。


有时候,我们可能需要根据用户的创建时间进行筛选。目前没有看到这方面的参数。但可以通过下面的方式来解决

Where-Object {$_.WhenCreated –gt “6/16/2017”}

这个过滤是在本地过滤的,就是把所有用户读取到了本地缓存中,然后再过滤。上述表达式的意思是,找到6/16/2017后创建的用户。

如何使用PowerShell批量删除Office 365的用户


使用$users保存了这个用户列表后,可以进一步操作Remove-MsolUser命令来进行删除

$users | Remove-MsolUser –Force