This script can be used to assign users a license who are member of a specific Office365-Security Group.
The password in this script is encrypted!
Please note that this script only works for users who do not have a license assigned yet.
There are a couple of variables used in this script. Please adjust them if necessary:
| Variable | Description |
| GName | Name of the Office 365 Security Group |
| LicenseN | Name of the license that will be assigned to the users Make sure you fill in the license in the correct format! For example: a P1 license is: EXCHANGESTANDARD |
| UsageLocation | Set user location Make sure you use the correct format! For example: Netherlands = NL |
| AdminUser | Username of the admin user in Office 365 to run this script Use the UID of the user. For example: AssignLicenses@wortelltechready.com |
Script
Here’s the code for the script:
#### Set Variable
Set-Variable -name GName -value "AssignLicenses@wortelltechready.com"
Set-Variable -name LicenseN -value EXCHANGESTANDARD
Set-Variable -name UsageLocation -value NL
Set-Variable -name AdminUser -value "admin@wortelltechready.com"
#### Set Encrypted Password
$Password = "01000000d08c9ddf0115d1118c7a00c04fc297eb010000000ec5c2fd088ac741a6882556fafff2bd0000000002000000000003660000c00000001000000040e00f5a263e04689f6499394c5c6bbe0000000004800000a000000010000000bd5dea3f12458d5030966c7c2cbd0f5528000000474330610cdcc62da9e80a3f19a1eb3b144b1c819ee6d6457906ddbad33baa9cd0944e904bf50000140000003974ffe84f0b9fa5df07c79eaeb3b2b84e5d0023"
$PasswordSecure = ConvertTo-SecureString -String $Password
$cred = New-Object system.Management.Automation.PSCredential($AdminUser, $PasswordSecure)
#### Create Function Logon to Office365
function Logon {
Import-Module MSOnline
Connect-MsolService -Credential $cred
}
############################################################################################################################
############################################################################################################################
#### Logon to Office 365
Logon
#### Create Log File + Start Logging
$Log = "AssignLicenseByGroup.ps1" + ".log"
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue"
Start-Transcript -path $Log -append
#### Get DistributionGroupMembers
$GUIDT = Get-MsolGroup -SearchString $GName
$GUID = $GUIDT.ObjectId
#### Set License
$CompanyInfo=Get-MsolAccountSKU
$CompanyName=$CompanyInfo.AccountName
$LicenseName=$CompanyName+":"+$LicenseN.ToUpper()
#Get-MsolGroupMember -GroupObjectId $GUID -All | Set-MsolUser -UsageLocation $UsageLocation
Get-MsolGroupMember -GroupObjectId $GUID -All | ForEach-Object {
Set-MsolUser -ObjectId $_.ObjectId -UsageLocation $UsageLocation
Set-MsolUserLicense -UserPrincipalName $_.EmailAddress -AddLicenses $LicenseName
}
#### Stop Logging
Stop-Transcript
Copy and paste the code in notepad (for example) and save it as “AssignLicenseByGroup.ps1”. Go through the following steps to use the script.
Steps
- Make sure you have the following tools installed before running the script:
Microsoft Online Services Sign-In Assistant (IDCRL7) – 32 bit version
Microsoft Online Services Sign-In Assistant (IDCRL7) – 64 bit version
Microsoft Online Services Module for Windows PowerShell (32-bit version)
Microsoft Online Services Module for Windows PowerShell (64-bit version)
See: http://onlinehelp.microsoft.com/Office365-enterprises/ff652560.aspx - Create an encrypted password using the following script and paste the output as the $Password variable in the “AssignLicenseByGroup” script:
# Path to the script to be created: $path = 'Password.txt' # Create empty template script: New-Item -ItemType File $path -Force -ErrorAction SilentlyContinue | Out-Null $pwd = Read-Host 'Enter Password' -AsSecureString $pwdencrypted = $pwd | ConvertFrom-SecureString $private:ofs = ' ' ('$password = "{0}"' -f $pwdencrypted) | Out-File $path notepad $path - If necessary, edit the script (with notepad for example) and change the other variables as discussed in the table at the top of this post.
- Run the “AssignLicenseByGroup.ps1” script.
- You will be asked to logon to Office 365. Use an Administrator account for this login.
- A log file will be created with the CSV file name and is given the extension.log.
This is the final part of a series of posts about some PowerShell scripts I created or used and modified for some Office 365/Exchange Online migrations.
An overview of the series can be found here.
Leave a comment