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.

NVLAN - Consultoria
Categorias: Soluções Microsoft