AsSecureStringパラメータを使用して入力された文字は、SecureStringオブジェクトとして返されますが、そのSecureStringオブジェクトから元の入力文字を取得するには次のようにします。
PS C:\work> $pass = Read-Host -AsSecureString "パスワー入力してください" パスワー入力してください: ********** PS C:\work> PS C:\work> $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass) PS C:\work> [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) hirakegoma
SecureStringオブジェクトから文字列を取り出すには、Marshaleクラスを使う必要があります。
まず、SecureStringToBSTRメソッドで、マネージなSecureStringオブジェクトの内容を、アンマネージとして割り当てたバイナリ文字列(BSTR)にコピーします。次に、PtrToStringBSTRメソッドで、アンマネージメモリに格納されているバイナリ文字列(BSTR)をマネージメモリに割り当てた文字列にコピーしています。
スポンサーリンク