PowerShell:
Generering av tilfeldige tall
Hvordan:
PowerShell tilbyr en enkel tilnærming for å generere tilfeldige tall ved bruk av Get-Random
cmdleten. Denne cmdleten kan produsere tilfeldige tall innenfor et standardområde eller et spesifisert område.
# Generer et tilfeldig tall mellom 0 og Int32.MaxValue
$randomNumber = Get-Random
Write-Output $randomNumber
For å spesifisere et område, bruk -Minimum
og -Maximum
parameterne:
# Generer et tilfeldig tall mellom 1 og 100
$randomNumber = Get-Random -Minimum 1 -Maximum 101
Write-Output $randomNumber
For mer kontroll, kan du instansiere et objekt av System.Random
klassen:
# Bruk System.Random for en sekvens av tall
$rand = New-Object System.Random
foreach ($i in 1..5) {
$randomNumber = $rand.Next(1, 101)
Write-Output $randomNumber
}
Hvis du trenger et tilfeldig utvalg fra en tabell eller samling, kan Get-Random
direkte velge et element:
# Tilfeldig utvalg fra en tabell
$array = 1..10
$randomItem = Get-Random -InputObject $array
Write-Output $randomItem
Fordypning
Get-Random
cmdleten i PowerShell bruker .NET-klassen System.Random
under panseret for å generere pseudotilfeldige tall. Disse er “pseudo” fordi de bruker algoritmer til å produsere sekvenser av tall som bare ser tilfeldige ut. For de fleste applikasjoner er dette nivået av tilfeldighet tilstrekkelig. Imidlertid, for brukstilfeller som krever kryptografisk sikkerhet, er ikke System.Random
passende på grunn av sin forutsigbare natur.
PowerShell og .NET tilbyr System.Security.Cryptography.RNGCryptoServiceProvider
for kryptografisk tilfeldighet, som er mer passende for å generere krypteringsnøkler eller andre sikkerhetsfølsomme operasjoner:
# Kryptografisk sikre tilfeldige tall
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new()
$bytes = New-Object byte[] 4
$rng.GetBytes($bytes)
$randomNumber = [BitConverter]::ToInt32($bytes, 0)
Write-Output $randomNumber
Mens Get-Random
og System.Random
tilfredsstiller et bredt sett med behov for tilfeldighet i scripting og applikasjonslogikk, er det essensielt å velge riktig verktøy for jobben, spesielt i sikkerhetsfokuserte applikasjoner der forutsigbarhet kan presentere en sårbarhet.