キーの生成をしたいときなど、ランダムな文字列が必要になることってありますよね。
Macであればopensslコマンドなどを使って簡単に生成することができます。
【Mac】OpenSSLコマンドで乱数を生成する | プログラミング実践.com
先日、証明書発行の際に乱数の生成が必要となったため、MacにOpenSSLコマンドインストールして乱数を生成してみました。 Windows10で乱数を生成したい方は以下の記事がおす…
しかし、Windowsだとなかなかそうはいきません。
opensslみたいなコマンドがないからです。
ランダムな文字列を生成する処理を作成してもいいのですが、できればコマンドでサクッと生成したいですよね。
もし、あなたが使用しているOSがWindows10であれば、PowerShellが便利ですよ。
今回は、Windows10でPowerShellを使って、ランダムな文字列を生成する方法についてご紹介します。
目次
アルファベットの大文字と小文字だけの文字列を作りたい場合
アルファベットの大文字と小文字の中から10文字取り出して、ランダムな文字列を作成してみましょう。
# 文字の重複を許さない場合
-join ((65..90) + (97..122) | Get-Random -Count 10 | % {[char]$_})
# 出力結果
pMhDQotXnB
# 文字の重複を許す場合
-join ((1..10) | %{(65..90) + (97..122) | Get-Random} | % {[char]$_})
# 出力結果
RWkgRfOdGn
アルファベットの大文字と小文字に記号を含めて文字列を作りたい場合
アルファベットの大文字と小文字、それから記号の中から文字を取り出したい場合は以下のようになります。
# 文字の重複を許さない場合
-join ((65..90) + (97..122) + (48..57) + (35,36,42,43,44,45,46,47,58,59,61,63,64,91,92,93,95,123,125,
126) | Get-Random -Count 10 | % {[char]$_})
# 出力結果
sAqmt@u?IR
# 文字の重複を許す場合
-join ((1..10) | %{(65..90) + (97..122) + (48..57) + (35,36,42,43,44,45,46,47,58,59,61,63,64,91,92,93
,95,123,125,126) | Get-Random} | % {[char]$_})
# 出力結果
9¥Y¥c@0UMf
処理内容の簡単な解説
今回のコマンドの処理内容について簡単に説明しますね。
数字はすべてASCIIテーブルにおける文字を表しています。
例えば、「65..90」はアルファベットの大文字を表します。
一方、「97..122」はアルファベットの小文字となります。
その他の数は記号ですね。
これらを配列にし、その中から数字を無作為に取り出してchar型に変換しているわけです。
これを指定した回数行うことで文字列が完成します。
もっと詳しく知りたい方はこちらのMicrosoftのTechNetが参考になりますよ。
参考:Generate Random Letters with PowerShell
終わりに
まだまだコマンドプロンプトを使う機会が多いですが、このようなコマンドを覚えておくとPowerShellも結構使い道が増えそうですね。
以上です。それでは。