Come generare stringhe casuali utilizzando PowerShell
-
Usa il Cmdlet
Get-Random
per generare stringhe casuali in PowerShell -
Usa la funzione
GeneratePassword()
per generare password casuali in PowerShell -
Usa il cmdlet
New-Guid
per generare stringhe casuali in PowerShell -
Usa il cmdlet
Get-Random
con insiemi di caratteri per generare stringhe casuali in PowerShell - Conclusione

Quando si gestisce Active Directory, attività come l’importazione di utenti in massa con password temporanee uniche possono essere impegnative. Fortunatamente, PowerShell offre soluzioni efficaci per generare stringhe casuali per semplificare questi compiti.
In questo articolo, esploreremo come raggiungere questo obiettivo utilizzando diversi metodi in PowerShell.
Usa il Cmdlet Get-Random
per generare stringhe casuali in PowerShell
PowerShell fornisce un comando nativo chiamato Get-Random
, che seleziona caratteri o numeri casuali. Quando forniamo un array di elementi al comando Get-Random
, questo sceglie casualmente uno o più oggetti da quella collezione.
Quando creiamo password, possiamo invocare il cmdlet Get-Random
quattro volte con diversi parametri input
(caratteri speciali, numeri, lettere maiuscole e lettere minuscole), concatenare le stringhe risultanti e mescolarle usando un’altra invocazione di Get-Random
.
Nell’esempio sottostante, definiamo una tabella hash chiamata $TokenSet
per memorizzare insiemi di caratteri per lettere maiuscole (U
), lettere minuscole (L
), numeri (N
) e caratteri speciali (S
). Questa riga di codice $variablename = Get-Random -Count 5 -InputObject $TokenSet.U
genera una selezione casuale di 5 caratteri dagli insiemi di caratteri (U
, L
, N
, S
) e la memorizza in una variabile ($Upper
, $Lower
, $Number
, $Special
).
Successivamente, combiniamo i caratteri selezionati casualmente da ciascun insieme in un unico insieme di caratteri chiamato $StringSet
. Infine, generiamo una stringa casuale di 15 caratteri selezionando dall’$StringSet
, e poi li uniamo per formare la password finale.
Codice di esempio:
$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 ''
Output:
9ZimEXDW*@xo?12
Il codice sopra genera una stringa diversa ogni volta. Tuttavia, comporta più chiamate al cmdlet Get-Random
, il che può rendere lo script più lungo e più lento in termini di tempo di elaborazione.
La sezione successiva discute come raggiungere la stessa funzionalità in sole poche righe di codice.
Usa la funzione GeneratePassword()
per generare password casuali in PowerShell
Se hai bisogno di creare stringhe specifiche per password, puoi utilizzare la funzione GeneratePassword()
dal namespace [System.Web.Security]
. Per utilizzare questa funzione, devi prima caricare la libreria System.Web
.
[Reflection.Assembly]::LoadWithPartialName("System.Web")
Una volta caricata, possiamo eseguire la funzione GeneratePassword()
per generare una password casualmente.
Nel codice sottostante, utilizziamo il namespace [System.Web.Security.Membership]
per accedere alla funzione GeneratePassword()
.
Codice di esempio:
[System.Web.Security.Membership]::GeneratePassword(15, 2)
Output:
QQjj*LJ:e=YZ)Fo
Come possiamo vedere dal codice di esempio sopra, la funzione GeneratePassword()
accetta due argomenti:
-
Il primo argomento accetta un valore intero che rappresenta il numero totale di caratteri necessari per la password.
-
Il secondo argomento accetta un valore intero che rappresenta il numero di caratteri speciali per la password.
Tuttavia, questo codice non garantisce la presenza di almeno un carattere numerico nella password. Per garantire che ci sia almeno un carattere numerico, puoi utilizzare il seguente codice.
Codice di esempio:
do {
$pwd = [System.Web.Security.Membership]::GeneratePassword(15, 2)
} until ($pwd -match '\d')
$pwd
Prima, crea un ciclo utilizzando la parola chiave do
per generare una password e assicurarti che contenga almeno un carattere numerico. Quindi, genera una password casuale con 15 caratteri, inclusi 2 caratteri speciali, utilizzando questa riga di codice [System.Web.Security.Membership]::GeneratePassword(15, 2)
e memorizzala nella variabile $pwd
.
Il ciclo si ripete fino a quando la password generata non contiene almeno un carattere numerico.
Output:
Y4UkK4)G+lannRd
In sole poche righe di codice, l’output sopra genera una stringa diversa ogni volta e assicura che ci sia almeno un carattere numerico nella stringa generata.
Usa il cmdlet New-Guid
per generare stringhe casuali in PowerShell
PowerShell fornisce il cmdlet New-Guid
per generare GUID casuali (Identificatori Universali Unici). Puoi utilizzare questi GUID come stringhe casuali per vari scopi, comprese le password.
Nell’esempio seguente, generiamo un GUID casuale (Identificatore Universale Unico) utilizzando [System.Guid]::NewGuid()
, quindi converiamo il GUID generato in una rappresentazione stringa e lo memorizziamo nella variabile $randomString
.
Codice di esempio:
$randomString = [System.Guid]::NewGuid().ToString()
$randomString
Output:
de5881dc-a546-43da-9b89-0bae712406b1
L’output genererà una stringa casuale.
Usa il cmdlet Get-Random
con insiemi di caratteri per generare stringhe casuali in PowerShell
Puoi anche generare stringhe casuali definendo insiemi di caratteri personalizzati e utilizzando il cmdlet Get-Random
. Questo metodo consente un maggiore controllo sull’insieme di caratteri utilizzato per le stringhe casuali.
Ecco un esempio.
Codice di esempio:
$length = 10
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)
$randomString
Per prima cosa, definiamo la lunghezza desiderata della stringa casuale e la memorizziamo in una variabile $length
.
Quindi, definiamo i caratteri ($characters
) dai quali verrà generata la stringa casuale come un array di caratteri. Il metodo .ToCharArray()
converte la stringa in un array dei suoi singoli caratteri.
Successivamente, creiamo una stringa ($randomString
) della lunghezza specificata scegliendo casualmente caratteri dall’array di caratteri, e i caratteri selezionati vengono uniti insieme per formare la stringa casuale finale. Infine, stampiamo la stringa casuale generata.
Output:
9lQSruF40i
L’output genererà una stringa casuale scegliendo i caratteri nell’ $characters
.
Conclusione
Questo articolo ti fornisce una serie di metodi per generare stringhe casuali in PowerShell, assicurandoti di avere lo strumento giusto per gestire password uniche e altre attività in Active Directory.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArticolo correlato - PowerShell String
- Array di stringhe in PowerShell
- Come controllare se un file contiene una stringa specifica utilizzando PowerShell
- Come controllare se una stringa non è NULL o VUOTA in PowerShell
- Come convertire un oggetto array in una stringa in PowerShell
- Come convertire una stringa sicura in testo normale in PowerShell
- Come estrarre una sottostringa PowerShell da una stringa