Como Gerar Cadeias Aleatórias Usando PowerShell
-
Use o cmdlet
Get-Randompara gerar strings aleatórias no PowerShell -
Use a função
GeneratePassword()para gerar senhas aleatórias no PowerShell -
Use o cmdlet
New-Guidpara gerar strings aleatórias no PowerShell -
Use o cmdlet
Get-Randomcom 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
