It's important to keep passwords long and not easily guessed. Lucky for you, we have PowerShell to create a random password.

Instead of coming up with your own solution using Get-Random, you can leverage the already-created and probably better GeneratePassword() method on the System.Web.Security.Membership class to create a random password one for you.

The GeneratePassword() method has two arguments; length and numberOfNonAlphanumericCharacters. Using these two arguments allows you to create all kinds of random passwords with PowerShell.

First, you'll probably need to let PowerShell know about the System.Web assembly since it's not loaded by default using Add-Type -AssemblyName 'System.Web'. Next, simply call the GeneratePassword() static method like this:

$length = 10 ## characters
$nonAlphaChars = 5
[System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

This is bound to return some crazy passwords your users will love!

But this isn't random, you say? Not a problem. Using the Get-Random command, we can make these passwords as random as you want.

$minLength = 5 ## characters
$maxLength = 10 ## characters
$length = Get-Random -Minimum $minLength -Maximum $maxLength
$nonAlphaChars = 5
$password = [System.Web.Security.Membership]::GeneratePassword($length, $nonAlphaChars)

The code above will return a random, plain-text password. You can then convert this to a securestring if you'd like.

$secPw = ConvertTo-SecureString -String $password -AsPlainText -Force

Join the Jar Tippers on Patreon

It takes a lot of time to write detailed blog posts like this one. In a single-income family, this blog is one way I depend on to keep the lights on. I'd be eternally grateful if you could become a Patreon patron today!

Become a Patron!