以前、P/InvokeしてWindows Credential ManagerでPowerShellの認証情報を格納したり取得する簡単なモジュールを紹介しました。
実際これは、valentiaを初めとして、認証を必要とするモジュールで使っています。
もっといい方法ないかなぁと、Windows Store Appsはどうしてるか調べていたところ、Windows.Security.Credentials namespaceを使った方法がスタンダードなようですね。
今回は、PowerShellでWindows.Security.Credentialsを使って認証情報を格納する方法を見てみましょう。
どこに保持されるの?
資格情報マネージャー(Windows Credential Manager) にある、Web資格情報(Web Credential) です。
以前作成したものが対象にしていたのはWindows Credentialsだったので、ここは違いますね。

さようなら P/Invoke
けた違いに書きやすくなりました。
例えば、現在設定されている一覧を取得するなら2行で済みます。
もちろん、追加も削除も簡単です。便利ですね。
モジュールにして使いやすくする
PowerShellの認証型はPSCredentialです。
一方で、Windows.Security.Credentials名前空間ではWindows.Security.Credentialsを利用します。型が違うのでコンバーターとかさくっと作ればokです。
ということで、モジュールです。

関数一覧
Configを一応用意していますが、使ってないので除いておきます。
CommandType Name Version Source ----------- ---- ------- ------ Function ConvertFrom-PasswordCredential 1.0.0 WindowsCredentialVault Function ConvertTo-PasswordCredential 1.0.0 WindowsCredentialVault Function Get-WindowsCredential 1.0.0 WindowsCredentialVault Function Remove-WindowsCredential 1.0.0 WindowsCredentialVault Function Set-WindowsCredential 1.0.0 WindowsCredentialVault Function Test-WindowsCredential 1.0.0 WindowsCredentialVault
Get/Remove/Set/Testがそろっているので、大体やりたいことはできると思います。ReadMeに使い方の説明を書いておいたのでどうぞ。
まとめ
既存の差し替え検討してもいいぐらいには使いやすかったのでいいですね。