Windows tips‎ > ‎Power Shell‎ > ‎

乱数文字列生成

乱数をつかって、ランダムな文字列(パスワード風)を生成します。

$Obj_Rand_Maker = new-object random
$Obj_Rand_Maker.next(1,100)
で1~100までの乱数が得られます。

$Str_Rand_Seed_Char
に使用する全ての文字列を代入しており、.lengthで文字列の長さが取得できます。

これを組み合わせて、
$Obj_Rand_Maker.next(1,$Str_Rand_Seed_Char.length)
の乱数生成を、$Int_Target = 16回繰り返して、パスワード風な文字列を作って居ます。

特殊文字のエスケープはPowerShellでは「`」(バッククオート)をつかいます。
例:"1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/-@:\^[]!QAZ`"WSX#EDC`$RFV%TGB&YHN`'UJM(IK<)OL>P+?=``*_~{}|"

ダブルクオーテーション Double Quotation
`"

シングルクオーテーション Single Quotation
`'

バッククオーテーション Back Quotation
``

ダラー Dollar
`$


[Password_Generator.ps1]
# Windows PowerShell
$Str_Rand_Seed_Char = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/-@:\^[]!QAZ`"WSX#EDC`$RFV%TGB&YHN`'UJM(IK<)OL>P+?=``*_~{}|"
$Int_Target = 16

$Obj_Rand_Maker = new-object random

# Generate Random String
for ($i = 1; $i -ile $Int_Target; $i += 1)
{
$Str_Password = $Str_Password+$Str_Rand_Seed_Char[$Obj_Rand_Maker.next(1,$Str_Rand_Seed_Char.length)]
}
echo $Str_Password

# Finish
Write-Host "Finish. Please Enter..." -NoNewLine
$res = $host.UI.ReadLine()