1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerShellでパスワードを生成してみる(大文字小文字記号数字)

Posted at

PowerShellで大文字小文字記号数字を含むパスワードを生成するワンライナーを書いてみました。

なんか他にもっといい書き方だったり、そもそも何かしらそういうツールを使うって話があるかと思いますが。

一つのサンプルとして解説します。

1..[int]::maxvalue | % {-join $(Get-Random -Count 32 -Input $(48..122 | % {[char]$_})) } | ?{$_ -cmatch '[a-z]'} | ?{$_ -cmatch '[A-Z]'} | ?{$_ -cmatch '[0-9]'} | ?{$_ -cmatch '[^a-zA-Z0-9]'} | Select-Object -first 1

実行すると画像のような形で文字列を出力します。

image.png

このワンライナーが何をやっているか解説。

やってる事を分解すると

  1. 1..[int]::maxvalueでひたすらループさせる。
  2. % {-join $(Get-Random -Count 32 -Input $(48..122 | % {[char]$_})) } 32文字の文字列を生成する
  3. ?{$_ -cmatch '[a-z]'} | ?{$_ -cmatch '[A-Z]'} | ?{$_ -cmatch '[0-9]'} | ?{$_ -cmatch '[^a-zA-Z0-9]'} a-zにマッチする、A-Zにマッチする、0-9にマッチする、それ以外(記号)にマッチするかどうか判定することによってそれぞれが1文字は含まれている文字列のみ選択する
  4. Select-Object -first 1 最初の一件を取得

ざっくりと流れを書くとこんな形。

大文字、小文字、数字、記号がそれぞれ含まれるように文字列を生成するんじゃなくて。
生成した文字列にそれらが含まれる1件が取得できるまで文字列生成を繰り返す。

そんな作りとなります。

総評

こういう処理をさっくりとかけるPowerShell。便利かと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?