Generate random password with PowerShell

So I was updating the PowerGUI AD pack the other day and wanted to add random password generation function for Reset Password action.

Here’s the code I came up with:

#Set up random number generator
$rand = New-Object System.Random
#Generate a new 10 character password
1..10 | ForEach { $NewPassword = $NewPassword + [char]$rand.next(33,127) }
#Reset the password
Set-QADUser "Dmitry Sotnikov" -UserPassword $NewPassword

That’s it. I guess I could get more fancy by ensuring that characters from 3 out of 4 character groups are present, etc. but this was the easiest one-liner to keep me going.

Tags: , , , , , , , ,

10 Responses to “Generate random password with PowerShell”


  1. 1 Adam Bell July 18, 2007 at 11:23 am

    HI Dimitry,

    I have a function thats not as simple as yours, but does generate complex passwords. It’s filed under the less than obvious post:
    http://www.leadfollowmove.com/archives/powershell/powershell-less-code-same-result

    I was comparing the same function between VBS and PoSH, and used a password gen function as my sample.

    Cheers

    Adam 🙂

  2. 2 dmitrysotnikov July 18, 2007 at 7:22 pm

    Hey Adam! Thanks for the link. I agree that technically my oneliner might in some cases fail to generate a complex password but I wanted it so much to be a oneliner! 😉

    Anyway, I’m glad you posted a link to your script so folks can find an alternative while reading this post.

    Dmitry

  3. 3 Simpler yet! July 29, 2007 at 5:10 am

    Here’s an even simpler call for password generation

    If you already have the assembly loaded, you can skip the first line:
    [Reflection.Assembly]::LoadWithPartialName(“System.Web”)

    Then it really is a one-liner

    [System.Web.Security.Membership]::GeneratePassword(10,2)

  4. 4 dmitrysotnikov July 29, 2007 at 6:53 am

    Wow! Yes, it looks like you can use the method standalone without other Membership functionality, so yes, great tip! Learning something new every day.

  5. 5 shanmugam.uthayakumar@wipro.com March 10, 2011 at 3:45 pm

    hi team,
    We are changing the IIS server password every 90 days once.can you please help me to automate the process of changing random password for more than 100 IIS Servers(Windows 2003) using POWERSHELL.

    Internet information services-.server name->application pools->default application pool->properties->identity->confiurable->user name:- abc
    password:- abc

    Thanks in Advance
    Shanmugam.u

  6. 6 Robbie May 13, 2011 at 8:42 am

    Is there any method of randomizing a alphabetical character only password?

    Thanks

    Robbie.

  7. 8 alex April 18, 2013 at 7:50 am

    watch out you probably shouldn’t use System.random as the random number generator especially if you are planning to use it on very many accounts:
    on MSDN
    “Random Initializes a new instance of the Random class, using a time-dependent default seed value.” So the more precisely a potential attacker knows of the time at which the passwords where generated the smaller the search space.

  8. 9 Anonymous November 12, 2013 at 9:25 pm

    what if I want to know what the password it?

    • 10 Dmitry Sotnikov November 14, 2013 at 12:04 am

      The password is in the $NewPassword variable. So just add the line:
      $NewPassword
      before or after the Set-QADUser and you will see the password in the PowerShell console.


Leave a comment




Legal

The posts on this blog are provided “as is” with no warranties and confer no rights. The opinions expressed on this site are mine and mine alone, and do not necessarily represent those of my employer - WSO2 or anyone else for that matter. All trademarks acknowledged.

© 2007-2014 Dmitry Sotnikov

July 2007
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
3031