ps/Modules/Alkami.DevOps.SystemEngineering/Public/New-SecurePassword.ps1
2023-05-30 22:51:22 -07:00

50 lines
1.5 KiB
PowerShell

function New-SecurePassword {
<#
.SYNOPSIS
Generates a secure password.
.DESCRIPTION
Generates a secure password containing at least one uppercase, one lowercase, one number
and one special character.
.PARAMETER PasswordLength
[byte] Length of the desired password.
.PARAMETER ProfileName
[string] The AWS profile to use during password generation.
.PARAMETER Region
[string] The AWS region to use during password generation.
.PARAMETER ExcludeCharacters
[string] String containing characters to exclude from the generated password.
.EXAMPLE
New-SecurePassword -PasswordLength 10 -ProfileName 'temp-dev' -Region 'us-east-1'
u48d![N[s^
#>
[CmdletBinding()]
[OutputType([string])]
param(
[Parameter(Mandatory = $false)]
[ValidateRange(4, 128)]
[byte]$PasswordLength = 15,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string] $ProfileName,
[Parameter(Mandatory = $true)]
[ValidateScript({$_ -in (Get-AWSRegion).region})]
[string] $Region,
[Parameter(Mandatory = $false)]
[string]$ExcludeCharacter = "`"';@`$``%<>=/\"
)
# This function is just a convenience wrapper to allow us to default the exclusion list to remove "problematic"
# characters from generated passwords.
Import-AWSModule
return ( Get-SECRandomPassword -ProfileName $ProfileName -Region $Region -RequireEachIncludedType $true -PasswordLength $PasswordLength -ExcludeCharacter $ExcludeCharacter )
}