使用PowerShell 导出Exchange中的用户中用户信息到Office 365

今天来介绍一篇关于PowerShell的文章,通常意义上来说我们如果想迁移Exchange到Office 365的话,可以有很多种方法,包括微软自己的以及第三方的,如果我们想通过第三方工具迁移的话,可以通过AAD Connect来将用户数据同步到Office 365, 当然,这种方法后续还需要一些别的操作才能让邮箱创建出来,如果不通过AAD Connect,我们也可以直接将Exchange里的一些信息从服务器中导出来,然后通过CSV的方式直接在Office 365里创建。

今天来分享一个自己用的将用户信息从Office 365里导出来的脚本,运行很简单,下边把代码分享一下

param (
	[parameter(ValueFromPipeline = $true)]
	$OUPath,
	[string]$DomainName,
	[string]$ForO365ExportTo = [Environment]::GetFolderPath("Desktop") + "\" + "UserInfoForO365FromExchange.csv"
)

try
{
	$Error.clear()
	Import-Module ActiveDirectory -ErrorAction 'Stop'
	$name = (Get-WmiObject -Class Win32_ComputerSystem).name + "." + (Get-WmiObject -Class Win32_ComputerSystem).domain
	$PsSessionAdded = $false
	Get-PSSession | %{
		if ($_.ComputerName -eq $name)
		{
			$PsSessionAdded = $true
		}

	}
	if ($PsSessionAdded -eq $false)
	{
		$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri ("http://" + $name + "/PowerShell/") -Authentication Kerberos -ErrorAction 'Stop'
		Import-PSSession $Session -ErrorAction 'Stop' | Out-Null
	}
}
catch
{
	throw $Error[0].Exception.Message
}

Function Test-OUPath()
{
	param ([string]$path)

	$OUExists = [adsi]::Exists("LDAP://$path")

	return $OUExists
}

if (([string]::IsNullOrEmpty($DomainName) -or ([string]::IsNullOrWhiteSpace($DomainName))))
{
	throw "$(Get-Date) * Please provide your domain name"
}

if ($OUPath)
{
	#Get Mailbox with OUPath
	if (Test-OUPath $OUPath)
	{
		$Mailbox = Get-Mailbox -Filter { RecipientTypeDetails -eq "UserMailbox" } -ResultSize Unlimited -OrganizationalUnit $OUPath
	}
	else
	{
		Write-Warning "$(Get-Date) * $OUPath does not exist, please check"
		exit

	}

}
else
{
	#Get all Mailboxes
	$Mailbox = Get-Mailbox -Filter { RecipientTypeDetails -eq "UserMailbox" } -ResultSize Unlimited

}

[pscustomobject[]]$O365UserObjects = $null

if ($OUPath)
{
	Write-Host 	"$(Get-Date) * The OU is $OUPath, begin to collect information, please wait..."
}
else
{
	Write-Host 	"$(Get-Date) * No OU provided, begin to collect information of all mailboxes, please wait..."
}

$Mailbox | %{

	#============================================================================
	#For O365 User provision

	$User = Get-ADuser -Identity $_.SamAccountName -Properties *
	$UserName = $User.UserPrincipalName
	$UserName = $UserName.Split("@")[0]
	$UserName = $UserName + "@" + $DomainName
	$FirstName = $User.GivenName
	$LastName = $User.Surname
	$DisplayName = $User.DisplayName
	$JobTitle = $User.Title
	$Department = $User.Department
	$OfficeNumber = ""
	$OfficePhone = $User.OfficePhone
	$MobilePhone = $User.MobilePhone
	$Fax = $User.Fax
	$Address = $User.StreetAddress
	$City = $User.City
	$State = $User.State
	$ZipCode = $User.PostalCode
	$Country = $User.Country
	#============================================================================
	$O365UserObject = New-Object -TypeName psobject
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'User Name' -Value $UserName
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'First Name' -Value $FirstName
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Last Name' -Value $LastName
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Display Name' -Value $DisplayName
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Job Title' -Value $JobTitle
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Department' -Value $Department
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Office Number' -Value $OfficeNumber
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Office Phone' -Value $OfficePhone
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Mobile Phone' -Value $MobilePhone
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Fax' -Value $Fax
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Address' -Value $Address
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'City' -Value $City
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'State or Province' -Value $State
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'ZIP or Postal Code' -Value $ZipCode
	$O365UserObject | Add-Member -MemberType NoteProperty -Name 'Country or Region' -Value $Country
	$O365UserObjects += $O365UserObject

}

if ($O365UserObjects -ne $null)
{
	try
	{
		$Error.clear()
		$O365UserObjects | Export-Csv -NoTypeInformation -Append -LiteralPath $ForO365ExportTo -Force -ErrorAction 'Stop'
		Write-Host  "$(Get-Date) * Done. Please check $ForO365ExportTo"
	}
	catch
	{
		Write-Warning $Error[0].Exception.Message
	}

}
else
{
	Write-Warning "$(Get-Date) * Something wrong, didn't get any info"
}

运行方法就不介绍了,本身参数其实很少,也可以指定导出的OU

原文地址:http://blog.51cto.com/mxyit/2092839

时间: 2024-10-07 04:54:09

使用PowerShell 导出Exchange中的用户中用户信息到Office 365的相关文章

易宝典文章——玩转Office 365中的Exchange Online服务 之二 怎样申请一个Office 365企业(试用)账户

玩转Office 365中的Exchange Online服务 之二 怎样申请一个Office 365企业(试用)账户 前面简单介绍了Office 365和Exchange Online.也就是说,可以给客户或公司老板推荐这个产品.但是,需要更有说服力的演示和客户体验才能打动甲方或老板. 对于前期体验和评估来讲,如果直接订阅一个正式版,会带来过高的评估成本,即使是订阅最廉价的版本,往往在企业采购前期评估中也会是困难重重,很多时候会直接导致项目的夭折. 幸运的是,对于Office 365来讲,可以

易宝典文章——玩转Office 365中的Exchange Online服务 之三十 体验全新的Office 365管理中心

Office 365管理中心即将改版,微软推出了全新的Office 365管理中,其风格和Windows 10风格匹配.接下来将展示一下关于全新的管理中心,以便先睹为快.一.主页和服务状态监视在主页中显示Modern风格的按钮,默认有"用户"."账单"."服务运行状态"等常用功能.特别是对于"服务运行状况",如果是绿色,则表示所有O365的服务运行正常,如果非绿色,可以可能有服务运行问题,可以直接点击"查看服务运行状

Powershell 导出Exchange 用户 EmailAddresses属性

Get-Mailbox test | select @{N='emailaddresses';e={[string]::join(";",($_.emailaddresses))}} | Export-Csv A.csv

易宝典文章——玩转Office 365中的Exchange Online服务 之七 怎样新建Exchange Online用户,并实现邮件发送

已经对Exchange Online有了一定了解之后,现在可以着手让Exchange Online发挥其用武之地了.大家都知道,Exchange Online的主要作用和传统的Exchange Server产品一样,用于向用户提供邮件服务.只不过Exchange Online是集成到Office 365中,已订阅的方式提供给用户使用的.既然是提供邮件服务,那么玩转Exchange Online首先就是要让其能够发送邮件. 怎样才能让Exchange Online工作起来呢?由于Office 36

易宝典文章——玩转Office 365中的Exchange Online服务 之一 初涉Office 365和Exchange Online服务

在现今的整个IT业,紧跟云是大势所趋.基于传统IT的各种服务不断收到冲击.从近两年经历来看,各产品商已经逐步将自家的服务移植到云中了.对于多年靠微软生存的技术人员来讲,更是需要不断与云保持亲密接触. 微软的云架构从IaaS.PaaS到SaaS无不涉猎.其中IaaS和PaaS微软通过MicrosoftAzure来实现,而SaaS微软通过Office 365来实现.对于Microsoft Azure在此就不再过多讲述,如果有兴趣可以去看<冲上云霄>系列.在这里只是浅谈一下Office 365中的E

Office 365中的邮件跟踪(Exchange Online)

在Office 365中调用邮件跟踪是管理员用来监视电子邮件流的最基本的工具之一.由于电子邮件是通过Office 365的EOP传递的,因此有关这些邮件的信息将存储在日志中,并可用于管理目的.无论用户是否删除或清除邮件,管理员都可以查看发送和接收邮件的基本信息. 消息跟踪不允许您查看到邮件的内容.不过,它可以提供很多关于电子邮件的重要数据: 发件人和收件人 发送和接收日期 主题和大小 事件的状态和细节.状态字段中有六个可能的值:提交,失败,挂起,隔离,过滤为垃圾邮件和未知. 用于发送消息的IP地

Office 365中管理员角色介绍-初级篇

Office 365中的管理员角色包括:全局管理员.密码管理员.帐务管理员.服务管理员 等 角色.针对不同的企业规模,可能想要指派多个行使不同职责的管理员. 下面是针对Office 365的管理员角色介绍: 全局管理员:可以访问所有管理功能.全局管理员是唯一能够分配其他管理员角色的管理员.您可以在组织中有多个全局管理员.注册购买 Office 365 的人员将成为全局管理员. 注意: 请确保在你的组织中作为全局管理员的所有用户都在其联系人信息中填写了移动电话号码和备用电子邮件地址. 帐务管理员:

从Exchange 通往Office 365系列(十七)通过活动目录同步创建用户

添加完域名之后我们来看如何在Office 365上创建用户,创建用户的方法可以分为三种 1.手动创建 2.通过活动目录同步工具从本地AD中同步过来 3.通过CSV文件批量创建 手动同步自不用说,通过CSV文件创建下一节中会讲到,现在我们来看如何通过活动目录同步工具DirSync来统一将域内的用户同步和OU等信息过来.首先要确定的是这是一个单向的同步,也就是只能从本地的AD同步到Office 365中,同步到Office 365中后我们可以在本地AD中进行正常的用户管理,这些更改都将会同步到Off

易宝典文章——玩转Office 365中的Exchange Online服务 之十三 怎样管理Exchange Online的邮件用户和联系人

在前面文章的描述过程中,提到了这样两个概念--联系人和组.接下来,就专门来讲关于Exchange Online的收件人对象的问题.对于Exchange Online来讲,所有能够接收邮件的对象都叫做收件人对象,它们具有一个共同的特点就是都具有邮件地址.虽然这些对象在Exchange Online中都具有邮件地址但不一定都有用于存储邮件的邮箱. 邮件用户和联系人就是属于在Exchange Online中只有邮件地址而没有邮箱存储的收件人对象.在ExchangeOnline中创建这类对象的目的,就是