Windows10

Windows10でランダムな文字列を生成する方法【PowerShell】

fonts

キーの生成をしたいときなど、ランダムな文字列が必要になることってありますよね。
Macであればopensslコマンドなどを使って簡単に生成することができます。

しかし、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も結構使い道が増えそうですね。
以上です。それでは。