Random Password Generator in PowerShell

Here is a quick and dirty PowerShell script that you can use to generate pseudo-random passwords using dictionary words, numbers and special characters.

This kind of script is good for environments such as schools and universities where mass-enrolment is quite common before the start of the academic year.

You can incorporate the function in your own script or come up with something new.

Credit goes to setgetgo.com for making the random word generator API available for public use.

The code is available on my GitHub page and is a good place to check for the latest iteration of code as well as some examples. Below is the code as of 14/06/2016

<#
.SYNOPSIS
Generate a random password

.DESCRIPTION
Uses the setgetgo.com random word API to generate random words. A random number and special character is then appended

.PARAMETER numberOfPasswords
Number of passwords to generate. Default is 1.

.PARAMETER wordLength
Word length. Default is 8.

.PARAMETER allowedSpecialCharacters
Special characters that are allowed to be appended to the password. Default is ! * and ?
If defining your own, use the format:
Generate-Password -allowedSpecialCharacters "!","?",",","/"

.PARAMETER maximumNumber
Default number to append to word will be between 0 and 999.

.EXAMPLE
PS C:\> Generate-Password
This will generate a random 8 character word, append a number between 0 and 999 and finally append a special character.

.NOTES
Additional information about the function.
#>
function Generate-Password
{
[CmdletBinding()]
[OutputType([string])]
param
(
[Parameter(Mandatory = $false)]
[int]$numberOfPasswords = 1,
[Parameter(Mandatory = $false)]
[int]$wordLength = 8,
[Parameter(Mandatory = $false)]
$allowedSpecialCharacters = @('!', '*', '?'),
[Parameter(Mandatory = $false)]
[int]$maximumNumber = 999
)

for ($i = 1; $i -le $numberOfPasswords; $i++)
{
$randomWord = Invoke-WebRequest -URI http://randomword.setgetgo.com/get.php?len=$wordLength
$randomNumber = Get-Random -Maximum $maximumNumber
$randomSpecialCharacter = $allowedSpecialCharacters | Get-Random
Write-Output "$($randomWord.content)$randomNumber$randomSpecialCharacter"
}
}

Bulk Licensing Office 365 Users with PowerShell

Licensing Office 365 users manually can be a tedious task; especially if you are tasked with licensing hundreds or even thousands (think educational institutes that need to license user’s every semester or academic year).

I created a fairly basic script that will take a .CSV input and license your users according to your Office 365 environment and the licenses you have available.

Continue reading Bulk Licensing Office 365 Users with PowerShell