1

暗号化されたパスワードが .ps1 スクリプトに保存されています。新しい環境でスクリプトをセットアップする場合、ユーザーはスクリプトの開始時にこのパスワードを手動で構成する必要があります。ユーザーがその方法でスクリプトを実行できるようにスイッチ パラメーターを設定し、必要なハッシュをユーザーに提供します。ただし、タイプミスなどがないことを確認するためにパスワードを 2 回入力するように求められた場合、パスワード ハッシュを一致させることができません。たとえば、PowerShell でこれを2 回連続して手動で入力すると、まったく同じパスワードを入力しても異なる結果が得られます。

Read-Host -AsSecureString 'Enter password' | ConvertFrom-SecureString

これは、-Keyまたは-SecureKeyパラメーターの有無にかかわらずです。ユーザーにパスワードの入力を求めるにはどうすればよいですか (一致することを確認するために 2 回)、一致する場合はパスワード ハッシュを出力しますか?

4

1 に答える 1

0

これはあまりきれいな解決策ではありませんが、指定されたパスワードを復号化して比較するという仕事をしています:

if ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringtoBSTR(($enterpw | ConvertTo-SecureString -Key $key))) -ne [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringtoBSTR(($enterpw2 | ConvertTo-SecureString -Key $key)))) {
    Write-Host "Given passwords do not match"
    Break
}
于 2015-04-08T06:24:57.520 に答える