Private/Migration/Invoke-SetMailboxMoveLicense.ps1
function Invoke-SetMailboxMoveLicense { <# .SYNOPSIS Sets Office 365 licenses during a migration project Either CSV or Excel file from SharePoint can be used .DESCRIPTION Sets Office 365 licenses during a migration project Either CSV or Excel file from SharePoint can be used .PARAMETER SharePointURL Sharepoint url ex. https://fabrikam.sharepoint.com/sites/Contoso .PARAMETER ExcelFile Excel file found in "Shared Documents" of SharePoint site specified in SharePointURL ex. "Batches.xlsx" Minimum headers required are: BatchName, UserPrincipalName .PARAMETER MailboxCSV Path to csv of mailboxes. Minimum headers required are: BatchName, UserPrincipalName .EXAMPLE Set-MailboxMoveLicense -MailboxCSV c:\scripts\batches.csv .EXAMPLE Set-MailboxMoveLicense -SharePointURL 'https://fabrikam.sharepoint.com/sites/Contoso' -ExcelFile 'Batches.xlsx' .NOTES General notes #> [CmdletBinding(DefaultParameterSetName = 'PlaceHolder')] param ( [Parameter(Mandatory, ParameterSetName = 'SharePoint')] [ValidateNotNullOrEmpty()] [string] $SharePointURL, [Parameter(Mandatory, ParameterSetName = 'SharePoint')] [ValidateNotNullOrEmpty()] [string] $ExcelFile, [Parameter(Mandatory, ParameterSetName = 'CSV')] [ValidateNotNullOrEmpty()] [string] $MailboxCSV, [Parameter()] [switch] $NoBatch, [Parameter()] [switch] $UseTargetUserPrincipalNameColumn ) end { switch ($PSCmdlet.ParameterSetName) { 'SharePoint' { $SharePointSplat = @{ SharePointURL = $SharePointURL ExcelFile = $ExcelFile NoBatch = $true } $UserChoice = Import-SharePointExcelDecision @SharePointSplat } 'CSV' { $CSVSplat = @{ MailboxCSV = $MailboxCSV NoBatch = $true } $UserChoice = Import-MailboxCsvDecision @CSVSplat } Default { $WhichUsers = @{ OutputMode = 'Multiple' Title = 'Change licenses or options by selecting users. Then click OK and you will be presented options to choose from' } $AllAzureADUsers = Get-AzureADUser -All:$true $DefaultSplat = @{ UserChoice = $AllAzureADUsers All = $true IncludeRecipientType = $true } $UserChoice = Invoke-GetMailboxMoveLicenseUserSku @DefaultSplat | Out-GridView @WhichUsers } } if ($UserChoice -ne 'Quit' ) { $LicenseDecision = Get-LicenseDecision $LicenseOptions = @{ } foreach ($License in $LicenseDecision.Options) { $LicenseOptions.Add($License, $true) } if ($UseTargetUserPrincipalNameColumn) { ($UserChoice).TargetUserPrincipalName | Set-CloudLicense @LicenseOptions | Out-GridView -Title "Results of Set Mailbox Move License (using TargetUserPrincipalName column)" } else { ($UserChoice).UserPrincipalName | Set-CloudLicense @LicenseOptions | Out-GridView -Title "Results of Set Mailbox Move License" } } } } |