
It’s a fairly common requirement when creating a new user to assign a randomly generated password, so during a recent engagement I wrote a little password generator to do that. I wanted to be able to chose whether special characters were used, and the length of the password - typically if the password doesn’t used special characters I would increase the length significantly!
Characters should be randomly picked from:


The SecureString type prevents the string from being displayed in the workflow attributes - it can be used as a normal string, but will be asterisk’d when displayed. Only a very slight security increase, but a nice touch.

A very, very simple schema - one scriptable task!

I’ve heavily commented the script, so that hopefully anyone can follow it:
function getNum() {
	// Generate a random number between 33 and 126
    return ((parseInt((Math.random()) * 1000) % 94) + 33);
}
function isPunctuation(num) {
	// ASCII characters 33-47, 58-64, 91-96 and 123-126 are punctuation
    if (((num >=33) && (num <=47)) || ((num >=58) && (num <=64)) || ((num >=91) && (num <=96)) || ((num >=123) && (num <=126))) { return true; }
    return false;
}
// Initialise a string
var strPassword = "";
// Count over the password length
for (i=0; i < passwordLength; i++) {
	// Get a random number
	nextCharacter = getNum();
	// If we are excluding punctuation
	if (excludePunctuation) {
		// Check if the random number is punctuation and get a new one until it's not
		while (isPunctuation(nextCharacter)) {
			nextCharacter = getNum();
		}
	}
	// Add the character to the string password
	strPassword = strPassword + String.fromCharCode(nextCharacter);
}
// Write the password to the log - for testing only!
System.log("Secure password generated: " + strPassword);
// Assign the string to the secureString Output parameter.
generatedPassword = strPassword;The proof of the pudding is in the eating, as they say! I’ve left a line in the script to log the plaintext of the password so that it can be tested - that should be commented out or deleted if you’re planning on using the script!
| 13 Characters with punctuation | 
| 20 Characters, without punctuation | 
You can download the workflow here - New-SecurePassword (zip)