Como Gerar Cadeias Aleatórias Usando PowerShell

  1. Use o cmdlet Get-Random para gerar strings aleatórias no PowerShell
  2. Use a função GeneratePassword() para gerar senhas aleatórias no PowerShell
  3. Use o cmdlet New-Guid para gerar strings aleatórias no PowerShell
  4. Use o cmdlet Get-Random com conjuntos de caracteres para gerar strings aleatórias no PowerShell
  5. Conclusão
Como Gerar Cadeias Aleatórias Usando PowerShell

Ao gerenciar o Active Directory, tarefas como a importação em massa de usuários com senhas temporárias únicas podem ser desafiadoras. Felizmente, o PowerShell oferece soluções eficazes para gerar strings aleatórias para simplificar essas tarefas.

Neste artigo, exploraremos como alcançar isso usando diferentes métodos no PowerShell.

Use o cmdlet Get-Random para gerar strings aleatórias no PowerShell

O PowerShell fornece um comando nativo chamado Get-Random, que seleciona caracteres ou números aleatórios. Quando fornecemos um array de itens ao comando Get-Random, ele escolhe aleatoriamente um ou mais objetos daquela coleção.

Ao criar senhas, podemos invocar o cmdlet Get-Random quatro vezes com diferentes parâmetros de input (caracteres especiais, números, letras maiúsculas e letras minúsculas), concatenar as strings de resultado e embaralhá-las usando outra invocação do Get-Random.

No exemplo abaixo, definimos uma tabela hash chamada $TokenSet para armazenar os conjuntos de caracteres para maiúsculas(U), minúsculas(L), números(N) e caracteres especiais(S). Esta linha de código $variablename = Get-Random -Count 5 -InputObject $TokenSet.U gera uma seleção aleatória de 5 caracteres dos conjuntos de caracteres(U, L, N, S) e os armazena em uma variável($Upper, $Lower, $Number, $Special).

Em seguida, combinamos os caracteres selecionados aleatoriamente de cada conjunto em um único conjunto de caracteres chamado $StringSet. Por fim, geramos uma string aleatória de 15 caracteres selecionando do $StringSet e juntamos tudo para formar a senha final.

Código de Exemplo:

$TokenSet = @{
    U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
    N = [Char[]]'0123456789'
    S = [Char[]]'!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~'
}
    
$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
$Special = Get-Random -Count 5 -InputObject $TokenSet.S

$StringSet = $Upper + $Lower + $Number + $Special

(Get-Random -Count 15 -InputObject $StringSet) -join ''

Saída:

9ZimEXDW*@xo?12

O código acima gera uma string diferente a cada vez. No entanto, envolve múltiplas chamadas ao cmdlet Get-Random, o que pode tornar o script mais longo e mais lento em termos de tempo de processamento.

A próxima seção discute como alcançar a mesma funcionalidade em apenas algumas linhas de código.

Use a função GeneratePassword() para gerar senhas aleatórias no PowerShell

Se você precisar criar strings específicas de senha, pode usar a função GeneratePassword() do namespace [System.Web.Security]. Para usar essa função, você deve primeiro carregar a biblioteca System.Web.

[Reflection.Assembly]::LoadWithPartialName("System.Web")

Uma vez carregada, podemos executar a função GeneratePassword() para gerar uma senha aleatoriamente.

No código abaixo, usamos o namespace [System.Web.Security.Membership] para acessar a função GeneratePassword().

Código de Exemplo:

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

Saída:

QQjj*LJ:e=YZ)Fo

Como podemos ver no código de exemplo acima, a função GeneratePassword() aceita dois argumentos:

  1. O primeiro argumento recebe um valor inteiro que representa o número total de caracteres necessários para a senha.

  2. O segundo argumento recebe um valor inteiro que representa o número de caracteres especiais para a senha.

No entanto, este código não garante a presença de pelo menos um caractere numérico na senha. Para garantir que haja pelo menos um caractere numérico, você pode usar o seguinte código.

Código de Exemplo:

do {
    $pwd = [System.Web.Security.Membership]::GeneratePassword(15, 2)
} until ($pwd -match '\d')

$pwd

Primeiro, crie um loop usando a palavra-chave do para gerar uma senha e garantir que ela contenha pelo menos um caractere numérico. Em seguida, gere uma senha aleatória com 15 caracteres, incluindo 2 caracteres especiais, usando esta linha de código [System.Web.Security.Membership]::GeneratePassword(15, 2) e armazene-a na variável $pwd.

O loop se repete até que a senha gerada contenha pelo menos um caractere numérico.

Saída:

Y4UkK4)G+lannRd

Em apenas algumas linhas de código, a saída acima gera uma string diferente a cada vez e garante que haja pelo menos um caractere numérico na string gerada.

Use o cmdlet New-Guid para gerar strings aleatórias no PowerShell

O PowerShell fornece o cmdlet New-Guid para gerar GUIDs aleatórios (Identificadores Únicos Globais). Você pode usar esses GUIDs como strings aleatórias para vários propósitos, incluindo senhas.

No exemplo a seguir, geramos um GUID aleatório (Identificador Único Global) usando [System.Guid]::NewGuid(), em seguida, convertemos o GUID gerado em uma representação de string e o armazenamos na variável $randomString.

Código de Exemplo:

$randomString = [System.Guid]::NewGuid().ToString()

$randomString

Saída:

de5881dc-a546-43da-9b89-0bae712406b1

A saída gerará uma string aleatória.

Use o cmdlet Get-Random com conjuntos de caracteres para gerar strings aleatórias no PowerShell

Você também pode gerar strings aleatórias definindo conjuntos de caracteres personalizados e usando o cmdlet Get-Random. Este método permite mais controle sobre o conjunto de caracteres usado para as strings aleatórias.

Aqui está um exemplo.

Código de Exemplo:

$length = 10

$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)

$randomString

Primeiro, definimos o comprimento desejado da string aleatória e o armazenamos em uma variável $length.

Em seguida, definimos os caracteres($characters) dos quais a string aleatória será gerada como um array de caracteres. O método .ToCharArray() converte a string em um array de seus caracteres individuais.

Em seguida, criamos uma string ($randomString) do comprimento especificado escolhendo aleatoriamente caracteres do array de caracteres, e os caracteres selecionados são juntados para formar a string aleatória final. Por fim, imprimimos a string aleatória gerada.

Saída:

9lQSruF40i

A saída gerará uma string aleatória escolhendo os caracteres no $characters.

Conclusão

Este artigo fornece uma variedade de métodos para gerar strings aleatórias no PowerShell, garantindo que você tenha a ferramenta certa para gerenciar senhas exclusivas e outras tarefas no Active Directory.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artigo relacionado - PowerShell String