Get-Random
Ottiene un numero casuale o seleziona oggetti in modo casuale da una raccolta.
Sintassi
RandomNumberParameterSet (Impostazione predefinita)
Get-Random
[[-Maximum] <Object>]
[-SetSeed <Int32>]
[-Minimum <Object>]
[-Count <Int32>]
[<CommonParameters>]
RandomListItemParameterSet
Get-Random
[-InputObject] <Object[]>
[-SetSeed <Int32>]
[-Count <Int32>]
[<CommonParameters>]
ShuffleParameterSet
Get-Random
[-InputObject] <Object[]>
[-SetSeed <Int32>]
[-Shuffle]
[<CommonParameters>]
Descrizione
Il cmdlet Get-Random ottiene un numero selezionato in modo casuale. Se si invia una raccolta di oggetti a Get-Random, ottiene uno o più oggetti selezionati in modo casuale dall'insieme.
Senza parametri o input, un Get-Random comando restituisce un numero intero senza segno a 32 bit selezionato in modo casuale compreso tra 0 (zero) e Int32.MaxValue (0x7FFFFFFF, 2,147,483,647).
Per impostazione predefinita, Get-Random genera una casualità crittograficamente sicura utilizzando la classe RandomNumberGenerator .
È possibile utilizzare i parametri di Get-Random per specificare i valori minimo e massimo, il numero di oggetti restituiti da una raccolta o un numero di inizializzazione.
Attenzione
L'impostazione del seme determina deliberatamente un comportamento non casuale e ripetibile. Deve essere usato solo quando si tenta di riprodurre il comportamento, ad esempio durante il debug o l'analisi di uno script che include Get-Random comandi.
Questo valore di inizializzazione viene usato per il comando corrente e per tutti i comandi di Get-Random successivi nella sessione corrente fino a quando non si usa SetSeed di nuovo o chiudere la sessione. Non è possibile reimpostare il valore di inizializzazione sul valore predefinito.
Esempio
Esempio 1: Ottenere un numero intero casuale
Questo comando ottiene un numero intero casuale compreso tra 0 (zero) e Int32.MaxValue.
Get-Random
3951433
Esempio 2: Ottenere un numero intero casuale compreso tra 0 e 99
Get-Random -Maximum 100
47
Esempio 3: Ottenere un numero intero casuale tra -100 e 99
Get-Random -Minimum -100 -Maximum 100
56
Esempio 4: Ottenere un numero a virgola mobile casuale
Questo comando ottiene un numero a virgola mobile casuale maggiore o uguale a 10,7 e minore di 20,92.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Esempio 5: Ottenere un numero intero casuale da una matrice
Questo comando ottiene un numero selezionato in modo casuale dalla matrice specificata.
1, 2, 3, 5, 8, 13 | Get-Random
8
Esempio 6: Ottenere diversi numeri interi casuali da una matrice
Questo comando ottiene tre numeri selezionati in modo casuale in ordine casuale da una matrice.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Esempio 7: Randomizzare un'intera raccolta
A partire da PowerShell 7.1, è possibile usare il parametro Shuffle per restituire l'intera raccolta in un ordine casuale.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Esempio 8: Ottenere un valore non numerico casuale
Questo comando restituisce un valore casuale da una raccolta non numerica.
"red", "yellow", "blue" | Get-Random
yellow
Esempio 9: Usare il parametro SetSeed
In questo esempio viene illustrato l'effetto dell'uso del parametro setSeed .
Poiché SetSeed produce un comportamento non casuale, viene in genere usato solo per riprodurre i risultati, ad esempio durante il debug o l'analisi di uno script.
# Commands with the default seed are pseudorandom
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
74
56
84
46
# Commands with the same seed are not random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
74
74
74
# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
74
56
84
46
Esempio 10: Ottenere file casuali
Questi comandi ottengono un campione selezionato in modo casuale di 50 file dall'unità C: del computer locale.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Esempio 11: Roll fair dadi
In questo esempio viene eseguito il rollback di un die 1200 volte e vengono conteggiato i risultati. Il primo comando, ForEach-Object ripete la chiamata a Get-Random dal piped in numeri (1-6). I risultati vengono raggruppati per valore con Group-Object e formattati come tabella con Select-Object.
1..1200 | ForEach-Object {
1..6 | Get-Random
} | Group-Object | Select-Object Name,Count
Name Count
---- -----
1 206
2 199
3 196
4 226
5 185
6 188
Esempio 12: Usare il parametro Count
È ora possibile usare il parametro count senza eseguire il piping degli oggetti per Get-Random.
L'esempio seguente ottiene tre numeri casuali minori di 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Esempio 13: Usare il parametro InputObject con una stringa vuota o $null
In questo esempio, il parametro InputObject specifica una matrice contenente una stringa vuota ('') e $null.
Get-Random -InputObject @('a','',$null)
Get-Random restituirà a, stringa vuota o $null. Lo sting vuoto viene visualizzato come riga vuota e $null torna a un prompt di PowerShell.
Parametri
-Count
Specifica il numero di oggetti casuali o numeri da restituire. Il valore predefinito è 1.
Se utilizzato con InputObject, se il valore di Count supera il numero di oggetti nell'insieme, Get-Random restituisce tutti gli oggetti in ordine casuale.
Proprietà dei parametri
| Tipo: | Int32 |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
RandomNumberParameterSet
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
RandomListItemParameterSet
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-InputObject
Specifica una raccolta di oggetti .
Get-Random ottiene oggetti selezionati in modo casuale dall'insieme fino al numero specificato da Count. Immettere gli oggetti, una variabile che contiene gli oggetti o un comando o un'espressione che ottiene gli oggetti . È anche possibile inviare tramite pipe una raccolta di oggetti a Get-Random.
A partire da PowerShell 7, il parametro InputObject accetta matrici che possono contenere una stringa vuota o $null. La matrice può essere inviata verso il basso della pipeline o come valore del parametro InputObject.
Proprietà dei parametri
| Tipo: | Object[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
RandomListItemParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
ShuffleParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Maximum
Specifica un valore massimo per il numero casuale.
Get-Random Restituisce un valore minore del valore massimo (diverso da Equal). Immettere un numero intero, un numero a virgola mobile e precisione doppia o un oggetto che può essere convertito in un numero intero o doppio, ad esempio una stringa numerica ("100").
Il valore di massimo deve essere maggiore (diverso da) il valore di Minimo. Se il valore di massimo o minimo è un numero a virgola mobile, Get-Random restituisce un numero a virgola mobile selezionato in modo casuale.
In un computer a 64 bit, se il valore di minimum è un intero a 32 bit, il valore predefinito di Maximum è Int32.MaxValue.
Se il valore di Minimum è double (un numero a virgola mobile), il valore predefinito di Maximum è Double.MaxValue. In caso contrario, il valore predefinito è Int32.MaxValue.
Proprietà dei parametri
| Tipo: | Object |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
RandomNumberParameterSet
| Posizione: | 0 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Minimum
Specifica un valore minimo per il numero casuale. Immettere un numero intero, un numero a virgola mobile e precisione doppia o un oggetto che può essere convertito in un numero intero o doppio, ad esempio una stringa numerica ("100"). Il valore predefinito è 0 (zero).
Il valore di Minimo deve essere minore (diverso da) il valore di Massimo. Se il valore di massimo o minimo è un numero a virgola mobile, Get-Random restituisce un numero a virgola mobile selezionato in modo casuale.
Proprietà dei parametri
| Tipo: | Object |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
RandomNumberParameterSet
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-SetSeed
Specifica un valore di inizializzazione per il generatore di numeri casuali. Quando si utilizza SetSeed, il cmdlet utilizza il metodo System.Random per generare numeri pseudocasuali, che non è crittograficamente sicuro.
Attenzione
L'impostazione del valore di inizializzazione comporta un comportamento non casuale. Deve essere usato solo quando si tenta di riprodurre il comportamento, ad esempio durante il debug o l'analisi di uno script che include Get-Random comandi.
Questo valore di inizializzazione viene usato per il comando corrente e per tutti i comandi di Get-Random successivi nella sessione corrente fino a quando non si usa SetSeed di nuovo o chiudere la sessione. Non è possibile reimpostare il valore di inizializzazione sul valore predefinito.
Proprietà dei parametri
| Tipo: | |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Shuffle
Restituisce l'intera raccolta in un ordine casuale.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
ShuffleParameterSet
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
Object
È possibile reindirizzare uno o più oggetti.
Get-Random Seleziona i valori in modo casuale dagli oggetti convogliati.
Output
System.Int32, System.Int64, System.Double
Get-Random Restituisce un numero intero o a virgola mobile oppure un oggetto selezionato in modo casuale da una raccolta inviata.
Note
Per impostazione predefinita, Get-Random genera una casualità crittograficamente sicura utilizzando la classe RandomNumberGenerator .
Get-Random Non sempre restituisce lo stesso tipo di dati del valore di input. Nella tabella seguente viene illustrato il tipo di output per ognuno dei tipi di input numerici.
| Tipo di input | Tipo di output |
|---|---|
| SByte | Doppio |
| Byte | Doppio |
| Int16 | Doppio |
| UInt16 | Doppio |
| Int32 | Int32 |
| UInt32 | Doppio |
| Int64 | Int64 |
| UInt64 | Doppio |
| Doppio | Doppio |
| Singolo | Doppio |
A partire da Windows PowerShell 3.0, Get-Random supporta interi a 64 bit. In Windows PowerShell 2.0 viene eseguito il cast di tutti i valori a System.Int32.
A partire da PowerShell 7, il parametro InputObject nel set di parametri RandomListItemParameterSet accetta matrici contenenti una stringa vuota o $null. Nelle versioni precedenti di PowerShell, solo il parametro Maximum nel set di parametri RandomNumberParameterSet ha accettato una stringa vuota o $null.