PowerShellでランダムなパスワードを生成するスクリプトおよび使い方を公開します。
本スクリプトにより直接的および間接的障害が生じても一切責任を負いません。
あらかじめご了承ください。
自己責任のもとで本資料をご利用ください。
PowerShelldで作成した関数は以下の通りです。
function Generate-Password() { if (-Not(($args.length -eq 1) -Or ($args.length -eq 2))) { Write-Output "ERR: Invalid argment`nUsage:`n`tGenerate-Password <password length> [included minimum symbol length]" return } $b = $True if (($args[0]).GetType().Name -ne "Int32") { Write-Output ("ERR: '" + $args[0] + "' is invalid argment") $b = $False } if ($args.length -eq 2 -And ($args[1]).GetType().Name -ne "Int32") { Write-Output ("ERR: '" + $args[1] + "' is invalid argment") $b = $False } if ($b -eq $False) { return } if ($args.length -eq 2 -And ($args[0] -lt $args[1])) { Write-Output ("ERR: Symbol length is not less than or equal to the password length.") return } $password_length = $args[0] $symbol_length = 0 if ($args.length -eq 2) { $symbol_length = $args[1] } Add-type -AssemblyName System.Web $gen_pwd = [System.Web.Security.Membership]::GeneratePassword($password_length, $symbol_length) Write-Output $gen_pwd }
上記のスクリプトは関数になっています。
みなさんが作成されているスクリプトに追加してもいいですし、本スクリプトを読み込んでも構いません。
以下、本スクリプトをCopy&PasteでPowerShellコンソールに貼り付けて使用してみます。
構文
Generate-Password 生成桁数 [最小記号数]
説明
最小記号数は省略可能です。
本スクリプトは、[System.Web.Security.Membership]のGeneratePasswordメソッドを使用しています。
https://msdn.microsoft.com/ja-jp/library/system.web.security.membership.generatepassword(v=vs.110).aspx
本メソッドの仕様として、第二引数の記号数は、生成されるパスワード文字列内に記号が含まれる最小数を指定します。
よって生成するパスワード内の記号数を指定しているわけではありません。
PS C:\> Generate-Password 10 yelX}DFi!*
PS C:\> Generate-Password 20 10 >IlQ(jF:{>/SX#}Gji.*
PS C:\> 1..10 | % { Generate-Password 30 10 } Fbi%ijd;3dm5:>mRYe&.*2K[Ujg{k{ zVj)GEti@K%7:;43u+Ou!Po[4Z_9^C XFCcjwg_gc%;+g(4Q]R-]Do[}UNEE1 yq26#E7wg=mp:+PcVNe&!:J[)0*aAd .JsJm5Kf*{[:>83fF+LC{lz[Nt!kZM ;pJZlann9#mp{sU_GD@X-ka[W]j!o& M1L|NRv)4_S-:Zp+-b-Yej-[VHZvOj G8l>])*I*4>*bf$5aI?7lZY1sV?qeA !I0;)%VV&?ihBw$*(3tFpzZw||r](K )XUPy7+BblBQY36%[J?>vvH.>v?Zm@
PS C:\> Generate-Password ERR: Invalid argment Usage: Generate-Password <password length> [included minimum symbol length]
以上、PowerShellでランダムなパスワードを生成するサンプルスクリプトでした。