再来分享一些自己写的小脚本哈,有些时候经常会需要使用自己的O365的账号做一些测试,为了能让测试的环境更真实,更贴近生产环境,很多时候我会用脚本去创建一些用户,然后生成一些邮件,日历或者是其他的数据,测试完成后这些用户和数据都是需要处理掉的,如果不把使用了自定义域的用户和组等都删掉,那么域名就没办法清除掉,手动删除这些数据当然是可以的,但是为了方便起见,其实可以用一些脚本直接将O365里的用户和组全部清除掉。自己写个简单的脚本就可以完成了,当然对于Global admin来说,这个当然不能随便删了


    以下是脚本的内容,运行之前需要先安装MS Online Module

try
{
	$Error.clear()
	Write-Host "$(Get-Date) * Deprovision users.."
	$Users = Get-MsolUser -All -ErrorAction Stop
	$Users | %{
		$Role = Get-MsolUserRole -UserPrincipalName $_.UserPrincipalName
		#排除Global Admin
		if (($Role -eq $null) -or ($Role.ObjectId -ne "62e90394-69f5-4237-9190-012177145e10"))
		{
			Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force -ErrorAction Stop
			Write-Host "$(Get-Date) * $($_.UserPrincipalName) removed.."
		}
		
	}
	
	
	Start-Sleep 1
	
	#从回收站删除用户
	Get-MsolUser -ReturnDeletedUsers -ErrorAction Stop | Remove-MsolUser -RemoveFromRecycleBin -Force -ErrorAction Stop
	
	Write-Host "$(Get-Date) * Done. Users already deleted"
	
	Start-Sleep 1
	
	Write-Host "$(Get-Date) * Deprovision Groups.."
	
	Get-MsolGroup -ErrorAction Stop | Remove-MsolGroup -Force -ErrorAction Stop
	
	Write-Host "$(Get-Date) * Done. Groups already deleted"
	
}
catch
{
	Write-Warning $Error[0].Exception.Message
	
}

    脚本相当简单,基本上都能看懂,对于实验环境来说,还是比较好用的。当然如果说有一些exchange online里的联系人或者其他数据,想要自动清除掉,还需要使用exchange online的module,这个就不一一介绍了