Vamos falar (com exemplos) como gerar senhas no PowerShell.
Para gerar uma senha aleatória no PowerShell (por exemplo) com 8 caracteres, usando caracteres especiais:
Add-Type -AssemblyName System.Web
[System.Web.Security.Membership]::GeneratePassword(8,2)
Para usar de modo prático, precisamos ter certeza que além do tamanho irá atender aos requisitos de complexidade de senhas do AD, para isso use o seguinte código (altere as partes em cinza conforme a sua realidade):
[int]$PasswordLenght = "8"
Add-Type -AssemblyName System.Web
$PassComplexCheck = $false
while($PassComplexCheck -eq $false)
{
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PasswordLenght,1)
If ( ($newPassword -cmatch "[A-Z\p{Lu}\s]") -and ($newPassword -cmatch "[a-z\p{Ll}\s]") -and ($newPassword -match "[\d]") -and ($newPassword -match "[^\w]") )
{
$PassComplexCheck=$True
}
}
Write-Host "Senha criada: $newPassword"
Caso queira diminuir o código, use da seguinte forma:
[int]$PasswordLenght = "8"
Add-Type -AssemblyName System.Web
$newPassword = $null
while( !($newPassword -cmatch "[A-Z\p{Lu}\s]") -and !($newPassword -cmatch "[a-z\p{Ll}\s]") -and !($newPassword -match "[\d]") -and !($newPassword -match "[^\w]") ){$newPassword=[System.Web.Security.Membership]::GeneratePassword($PasswordLenght,1)}
Write-Host "Senha criada: $newPassword"
Funcionando, utilize/adapte em seus códigos.
Se preferir criar uma variável ($Password).Password que cada vez que é chamada informa uma nova senha, utilize esse código:
$Password = New-Object -TypeName PSObject
$Password | Add-Member -MemberType ScriptProperty -Name "Password" -Value { ("!@#$%&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".tochararray() | sort {Get-Random})[0..8] -join '' }
($Password).Password
Fontes/Referências
https://docs.microsoft.com/pt-br/dotnet/api/system.web.security.membership?view=netframework-4.8
https://woshub.com/generating-random-password-with-powershell/
Mais Informações
Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.
Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.