PowerShellを使ったパスワードダイアログ実装方法について

今回はPowerShellでパスワードダイアログを表示する方法を紹介する。

実際パスワードを入力するにあたって、利用者視点で考えると、
CLI入力よりも、ダイアログ入力の方が見た目が良いだろうという判断。
もちろんパスワードはマスクされた状態で入力し、
その結果を受けてスクリプトを動かすことを目指した。

以下がそのコードとなる。

# アセンブリの読み込み
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

#フォーム全体
$Form = New-Object System.Windows.Forms.Form
$Form.Text = 'パスワード入力' #タイトル
$Form.StartPosition = 'CenterScreen' #中央表示
$Form.Size = New-Object System.Drawing.Size(300,180) #フォームの大きさ

#ラベル
$Label = New-Object System.Windows.Forms.Label
$Label.Location = New-Object System.Drawing.Point(80,20)
$Label.Size = New-Object System.Drawing.Size(200,20)
$Label.Text = "パスワードを入力して下さい"
$Form.Controls.Add($Label)

#パスワード
$MaskedTextBox = New-Object System.Windows.Forms.MaskedTextBox
$MaskedTextBox.PasswordChar = '*'
$MaskedTextBox.Location = New-Object System.Drawing.Point(80,50)
$MaskedTextBox.size = New-Object System.Drawing.Size(140,23)
$Form.Controls.Add($MaskedTextBox)

#OKボタン
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(70,80)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$Form.AcceptButton = $OKButton
$Form.Controls.Add($OKButton)

#キャンセルボタン
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(155,80)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'キャンセル'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$Form.CancelButton = $CancelButton
$Form.Controls.Add($CancelButton)

#ダイアログ表示
$Result = $Form.ShowDialog()

#判定
if ($Result -eq [System.Windows.Forms.DialogResult]::OK)
{
    #パスワード表示
    $Pass = $MaskedTextBox.Text
    "パスワードは: {0}です" -f $Pass
    Read-Host "Enter キーを押してください..."
} else {
    exit
}

何も特に難しいことはしていない。
あえて言うならば、フォームを変形させたい場合は座標やサイズの調整が必要なくらい。
意外にもこのような形でまとまった物がネット上に無かったのでアップしてみた。
何かの役に立てば嬉しいと思う。

ということで今日はこの辺で。あと使用は自己責任でお願いする。

ブログ主が運営しているゲームです。
こちらよりどうぞ

コメント

  1. ryo より:

    あけましておめでとうございます。
    体調はどうでしょうか。

    私は8月から在宅勤務しているせいか、腰痛が酷いですね。

  2. 山羊丸 より:

    コメントありがとうございます。お久しぶりです。
    あけましておめでとうございます。

    私の方も在宅勤務となりそうな感じなので、
    それなりの準備をしています。

    体調は順調な方でMF復活とまではいきませんが、
    良い方向に向かっています。