以下のTipsでランダムなパスワードの作り方のサンプルがあったので紹介しておく。
Create Random Passwords - Power Tips - Powershell.com Powershell Scripts, Tips and Resources
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 | <# .SYNOPSIS ランダムなパスワードを作る .DESCRIPTION パスワードに使う文字列と長さを指定するとランダムなパスワードを(文字列)を返す。 .LINK http://powershell.com/cs/blogs/tips/archive/2010/12/13/create-random-passwords.aspx .NOTES デフォルトでは10桁のパスワードを返す。(紛らわしいのでゼロとオーは使わない) .EXAMPLE mGet-RandomPassword.ps1 -length 7 -char 'abcdefghijklmnopqrstuvwxyz0123456789' #> param( $length = 10, $characters = 'abcdefghkmnprstuvwxyzABCDEFGHKLMNPRSTUVWXYZ123456789!"$%&/()=?*+#_' #[string][char[]](33..47+49..78+80..110+112..126) ) # select random characters $random = 1..$length | ForEach-Object { Get-Random -Maximum $characters.length } # output random pwd [String]$characters[$random] |
すこし解説すると、まずパスワードに使える文字列と桁数を定義する。
Get-Randomを使ってパスワードの桁数分の文字列(配列)の添字を創りだして$randomに配列で入れる。
その配列が指し示す文字を$charactersから抜き出しStringに変換して返す。
これで、都度$charactersに定義した文字列から$lengthで指定した個数の文字をランダムに抜き出したパスワードが出来上がる。
※記号などは使えない文字もあるかもしれないので適宜カスタマイズ。
Windows Server 2012 R2 からか、Stringにキャストしたときにすべての文字列間に半角スペースが入ってしまうようです。
返信削除例:
[string][char[]]"test"
t e s t
コメントありがとうございます。
返信削除多分もともとそのような動作のような気がします。
実際に使うには最後のところで、
-join $characters[$random]
としたほうが良いのかもしれませんね。