System.Security.SecureStringから読み取り可能なパスワードにパスワードをデコードしたいと思います。
$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")
このコード部分は正常に機能します。$credentialsオブジェクトを使用できます。しかし、コードの後半で、読み取り可能な形式のパスワードが必要になります。メソッドには読み取り可能な文字列のパスワードが必要なためです。したがって、パスワードをデコードして戻す必要があります。
$ credentialsオブジェクトからパスワードをデコードするにはどうすればよいですか?
アップデート
動作しない:
$password = convertto-securestring "TestPassword" -asplaintext -force
$credentials = New-Object System.Net.NetworkCredential("TestUsername", $password, "TestDomain")
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($credentials.password)
$result = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr)
$result