The Powershell script below can be used to generate 20 passwords using random words and numbers. Save the code to .ps1 file along with a “words” file in .csv format.
# Generates passphrases similar to password generator on intranet
# inspired by:
# https://www.hanselman.com/blog/DictionaryPasswordGeneratorInPowershell.aspx
# requires CSV file in same directory as script
#--------------------------------------------------------------------------------------------------
$rand = new-object System.Random
# read-in very large file creating smaller list of random words
$words = Get-Content "words.csv" | Sort-Object {Get-Random} -unique | select -first 100
Function Create-Password
{
# query the smaller list of words for single entry (2 times)
$word1 = $words | Sort-Object {Get-Random} -unique | select -first 1
$word2 = $words | Sort-Object {Get-Random} -unique | select -first 1
# create random digits
$number1 = Get-Random -Minimum 1000 -Maximum 9999
# concatenante and return new random password
return (Get-Culture).TextInfo.ToTitleCase($word1) + (Get-Culture).TextInfo.ToTitleCase($word2) + $number1
}
# generate 20 passwords
for($i=1; $i -le 20; $i++){
Create-Password
}
When executed the script will return 20 random passwords similar to this:
Note: you will need a “words” file from which random words will be pulled. I already had a “words” table in a MySQL database and used it to query for words between 5 and 7 characters in length. This gave me a file with about 15,000 words.
More information about obtaining a words list can be found on the following sites:
https://github.com/dwyl/english-words
https://stackoverflow.com/questions/2213607/how-to-get-english-language-word-database