#author("2018-08-20T13:47:32+09:00","","")
#author("2018-08-20T13:47:51+09:00","","")
#navi(../)
* PowerShellでパスワードを生成するスクリプト [#y42dc529]
PowerShellでランダムなパスワードを生成するスクリプトおよび使い方を公開します。~

&color(red){本スクリプトにより直接的および間接的障害が生じても一切責任を負いません。};~
&color(red){あらかじめご了承ください。};~
&color(red){自己責任のもとで本資料をご利用ください。};

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 関連記事 [#f707dc4b]
-[[VBScriptでランダムなパスワードを生成するスクリプト>WSH/パスワードを生成スクリプト]]


* ランダムなパスワードを生成するPowerShellスクリプト [#n7c7054f]
PowerShelldで作成した関数は以下の通りです。
PowerShellで作成した関数は以下の通りです。~
&ref(genpwd.zip); ダウンロード~
 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
 }



* 使い方 [#h772718b]
上記のスクリプトは関数になっています。~
みなさんが作成されているスクリプトに追加してもいいですし、本スクリプトを読み込んでも構いません。~
以下、本スクリプトを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~
''本メソッドの仕様として、第二引数の記号数は、生成されるパスワード文字列内に記号が含まれる最小数を指定します。~
よって生成するパスワード内の記号数を指定しているわけではありません。''

+ PowerShellコンソールに貼り付け
#ref(01.png)
#br
+ 実際に使ってみます。
-10桁のパスワードを生成します。
 PS C:\> Generate-Password 10
 yelX}DFi!*
-20桁で最小記号数10文字でパスワードを生成します。
 PS C:\> Generate-Password 20 10
 >IlQ(jF:{>/SX#}Gji.*
-パスワードを10個生成します。
 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@
- 引数なしで起動するとUsageが表示されます。
 PS C:\> Generate-Password
 ERR: Invalid argment
 Usage:
         Generate-Password <password length> [included minimum symbol length]


以上、PowerShellでランダムなパスワードを生成するサンプルスクリプトでした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS