Get CSVData programmatically for New-MigrationBatch

  1. <#
  2. Exchange On-Prem, Exchange Online
  3. Define mailboxes for migration batch programatically without CSV file
  4. $MigUsers = ConvertTo-CSVDataByte "user1@abc.cz","user2@abc.cz"
  5. New-MigrationBatch -Local -Name LocalMove1 -CSVData $MigUsers -TargetDatabases MBXDB2
  6. #>
  7.  
  8. function ConvertTo-CSVDataByte {
  9. Param(
  10. [Parameter(Mandatory = $true)]
  11. [ValidateNotNull()]
  12. [String[]]$Emails
  13. )
  14. $CSVData = [system.Text.Encoding]::Default.GetBytes('"EmailAddress"')
  15. $CSVData += [system.Text.Encoding]::Default.GetBytes("`n")
  16. for ($i = 0; $i -le $Emails.Length - 1; $i++) {
  17. $CSVData += [system.Text.Encoding]::Default.GetBytes('"' + $Emails[$i] + '"')
  18. if ($UPNs.Length - 1 -ne $i) {
  19. $CSVData += [system.Text.Encoding]::Default.GetBytes("`n")
  20. }
  21. }
  22. return $CSVData
  23. }