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

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:
-
O primeiro argumento recebe um valor inteiro que representa o número total de caracteres necessários para a senha.
-
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.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArtigo relacionado - PowerShell String
- Array de Strings em PowerShell
- Como Converter um Objeto de Array em uma String no PowerShell
- Como Converter uma String Segura em Texto Simples no PowerShell
- Como Encontrar a Posição de uma Substring no PowerShell
- Como Escapar Aspas Simples e Aspas Duplas no PowerShell
- Como Extrair uma Substring do PowerShell de uma String