Get-Random

Obtient un nombre aléatoire ou sélectionne de façon aléatoire des objets d'une collection.

Syntaxe

Get-Random
   [-SetSeed <Int32>]
   [[-Maximum] <Object>]
   [-Minimum <Object>]
   [-Count <Int32>]
   [<CommonParameters>]
Get-Random
   [-SetSeed <Int32>]
   [-InputObject] <Object[]>
   [-Count <Int32>]
   [<CommonParameters>]
Get-Random
   [-SetSeed <Int32>]
   [-InputObject] <Object[]>
   [-Shuffle]
   [<CommonParameters>]

Description

L’applet Get-Random de commande obtient un nombre sélectionné de manière aléatoire. Si vous envoyez une collection d’objets à Get-Random, elle obtient un ou plusieurs objets sélectionnés de façon aléatoire à partir de la collection.

Sans paramètres ni entrée, une Get-Random commande retourne un entier non signé 32 bits sélectionné aléatoirement entre 0 (zéro) et [int32]::MaxValue.

Vous pouvez utiliser les paramètres pour Get-Random spécifier les valeurs minimales et maximales, le nombre d’objets retournés à partir d’une collection ou un nombre de départs.

Attention

Get-Random ne garantit pas le caractère aléatoire sécurisé par chiffrement. La valeur initiale est utilisée pour la commande active et pour toutes les commandes suivantes Get-Random dans la session active jusqu’à ce que vous utilisiez SetSeed à nouveau ou fermez la session. Vous ne pouvez pas réinitialiser la valeur initiale à sa valeur par défaut.

La définition délibérée de la valeur initiale entraîne un comportement non aléatoire et reproductible. Il doit être utilisé uniquement lors de la tentative de reproduction du comportement, par exemple lors du débogage ou de l’analyse d’un script qui inclut Get-Random des commandes. N’oubliez pas que la valeur initiale peut être définie par d’autres codes dans la même session, comme un module importé.

PowerShell 7.4 inclut Get-SecureRandom, ce qui garantit une sécurité de chiffrement aléatoire.

Exemples

Exemple 1 : Obtenir un entier aléatoire

Cette commande obtient un entier aléatoire compris entre 0 (zéro) et Int32.MaxValue.

Get-Random

3951433

Exemple 2 : Obtenir un entier aléatoire compris entre 0 et 99

Get-Random -Maximum 100

47

Exemple 3 : Obtenir un entier aléatoire compris entre -100 et 99

Get-Random -Minimum -100 -Maximum 100

56

Exemple 4 : Obtenir un nombre à virgule flottante aléatoire

Cette commande obtient un nombre à virgule flottante aléatoire supérieur ou égal à 10,7 et inférieur à 20,93.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

Exemple 5 : Obtenir un entier aléatoire à partir d’un tableau

Cette commande obtient un nombre sélectionné de façon aléatoire dans le tableau spécifié.

1, 2, 3, 5, 8, 13 | Get-Random

8

Exemple 6 : Obtenir plusieurs entiers aléatoires à partir d’un tableau

Cette commande obtient trois nombres sélectionnés de façon aléatoire dans un ordre aléatoire à partir d’un tableau.

1, 2, 3, 5, 8, 13 | Get-Random -Count 3

3
1
13

Exemple 7 : Aléatoirer une collection entière

À compter de PowerShell 7.1, vous pouvez utiliser le paramètre Shuffle pour retourner l’ensemble de la collection dans un ordre aléatoire.

1, 2, 3, 5, 8, 13 | Get-Random -Shuffle

2
3
5
1
8
13

Exemple 8 : Obtenir une valeur non numérique aléatoire

Cette commande retourne une valeur aléatoire depuis une collection non numérique.

"red", "yellow", "blue" | Get-Random

yellow

Exemple 9 : Utiliser le paramètre SetSeed

Cet exemple montre l’effet de l’utilisation du paramètre SetSeed .

Étant donné que SetSeed produit un comportement non aléatoire, il est généralement utilisé uniquement pour reproduire les résultats, par exemple lors du débogage ou de l’analyse d’un 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

32
25
93
95

# Commands with the same seed aren't random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23

32
32
32

# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100

32
25
93
95

Exemple 10 : Obtenir des fichiers aléatoires

Ces commandes obtiennent un échantillon aléatoire de 50 fichiers à partir du C: lecteur de l’ordinateur local.

$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50

Exemple 11 : Roll fair dice

Cet exemple montre comment déployer une mort équitable 1200 fois et compter les résultats. La première commande ForEach-Object répète l’appel à Get-Random partir du canal en nombres (1-6). Les résultats sont regroupés par leur valeur avec Group-Object et mis en forme sous forme de tableau avec 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

Exemple 12 : Utiliser le paramètre Count

Vous pouvez maintenant utiliser le paramètre Count sans piping d’objets vers Get-Random. L’exemple suivant obtient trois nombres aléatoires inférieurs à 10.

Get-Random -Count 3 -Maximum 10

9
0
8

Exemple 13 : Utiliser le paramètre InputObject avec une chaîne vide ou un $null

Dans cet exemple, le paramètre InputObject spécifie un tableau qui contient une chaîne vide ('') et $null.

Get-Random -InputObject @('a','',$null)

Get-Random renvoie soit a, chaîne vide, soit $null. La sting vide s’affiche sous la forme d’une ligne vide et $null retourne à une invite PowerShell.

Paramètres

-Count

Spécifie le nombre d’objets aléatoires à retourner. La valeur par défaut est 1.

En cas d’utilisation avec InputObject un conteneur d’une collection :

  • Chaque élément sélectionné de manière aléatoire n’est retourné qu’une seule fois.
  • Si la valeur de Count dépasse le nombre d’objets de la collection, tous les objets de la collection sont retournés dans un ordre aléatoire.
Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie une collection d'objets. Get-Random obtient des objets sélectionnés de façon aléatoire dans l’ordre aléatoire de la collection jusqu’au nombre spécifié par Count. Entrez les objets, une variable contenant les objets, ou bien tapez une commande ou une expression qui obtient les objets. Vous pouvez également diriger une collection d’objets vers Get-Random.

À compter de PowerShell 7, le paramètre InputObject accepte des tableaux qui peuvent contenir une chaîne vide ou $null. Le tableau peut être envoyé vers le bas du pipeline ou en tant que valeur de paramètre InputObject .

Type:Object[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Maximum

Spécifie une valeur maximale pour le nombre aléatoire. Get-Random retourne une valeur inférieure à la valeur maximale (non égale). Entrez un entier, un nombre à virgule flottante double précision ou un objet pouvant être converti en entier ou double, tel qu’une chaîne numérique (« 100 »).

La valeur maximale doit être supérieure (non égale à) à la valeur Minimale. Si la valeur maximale ou minimale est un nombre à virgule flottante, Get-Random retourne un nombre à virgule flottante sélectionné de façon aléatoire.

Sur un ordinateur 64 bits, si la valeur minimale est un entier 32 bits, la valeur par défaut de Maximum est Int32.MaxValue.

Si la valeur minimale est un double (nombre à virgule flottante), la valeur par défaut de Maximum est Double.MaxValue. Sinon, la valeur par défaut est Int32.MaxValue.

Type:Object
Position:0
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Minimum

Spécifie une valeur minimale pour le nombre aléatoire. Entrez un entier, un nombre à virgule flottante double précision ou un objet pouvant être converti en entier ou double, tel qu’une chaîne numérique (« 100 »). La valeur par défaut est 0 (zéro).

La valeur minimale doit être inférieure (non égale à) à la valeur Maximum. Si la valeur maximale ou minimale est un nombre à virgule flottante, Get-Random retourne un nombre à virgule flottante sélectionné de façon aléatoire.

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SetSeed

Spécifie une valeur de départ pour le générateur de nombres aléatoires. Lorsque vous utilisez SetSeed, l’applet de commande génère des nombres pseudo-random, qui ne sont pas sécurisés par chiffrement.

Attention

La définition de la valeur initiale entraîne un comportement non aléatoire. Il doit être utilisé uniquement lors de la tentative de reproduction du comportement, par exemple lors du débogage ou de l’analyse d’un script qui inclut Get-Random des commandes.

Cette valeur initiale est utilisée pour la commande active et pour toutes les commandes suivantes Get-Random dans la session active jusqu’à ce que vous utilisiez SetSeed à nouveau ou fermez la session. Vous ne pouvez pas réinitialiser la valeur initiale à sa valeur par défaut.

Type:Nullable<T>[Int32]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Shuffle

Retourne l’intégralité de la collection dans un ordre aléatoire.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Object

Vous pouvez diriger n’importe quel objet vers cette applet de commande. Il sélectionne les valeurs de manière aléatoire à partir des objets redirigés.

Sorties

Int32

Int64

Double

PSObject

Cette applet de commande retourne un nombre entier ou à virgule flottante, ou un objet sélectionné de façon aléatoire à partir d’une collection envoyée.

Notes

Get-Random ne retourne pas toujours le même type de données que la valeur d’entrée. Le tableau suivant montre le type de sortie pour chacun des types d’entrée numériques.

Type d’entrée Type de sortie
SByte Double
Byte Double
Int16 Double
UInt16 Double
Int32 Int32
UInt32 Double
Int64 Int64
UInt64 Double
Double Double
Unique Double

À compter de Windows PowerShell 3.0, Get-Random prend en charge les entiers 64 bits. Dans Windows PowerShell 2.0, toutes les valeurs sont converties en System.Int32.

À compter de PowerShell 7, le paramètre InputObject dans le jeu de paramètres RandomListItemParameterSet accepte les tableaux qui contiennent une chaîne vide ou $null. Dans les versions antérieures de PowerShell, seul le paramètre Maximum dans le jeu de paramètres RandomNumberParameterSet a accepté une chaîne vide ou $null.