2010年6月18日金曜日

◆プレーンテキストから資格情報を作る

コマンドレットの中には資格情報(Credentialパラメータ)をとるものが多くある。
Get-Credentialと入力すると資格情報入力用のダイアログが表示され、そこにユーザーIDとパスワードを指定すると資格情報を返してくれる。

$cred = Get-Credential

しかし、処理の中には対話処理が許されない場合もある。
本来は上記の$credをDISKに保存しておき、実行時にそれを使うのが筋だろうが、こいつはログオンユーザーが変わると復元できない。
というわけで資格情報をプレーンテキストから作る方法も押さえておきたい。
New-Credentialなんてコマンドがあると良いのだがそんなことはなさそう。
そこで、$cred  |  Get-Member  としてみると、

   TypeName: System.Management.Automation.PSCredential
Name                 MemberType Definition
----                 ---------- ----------
Equals               Method     bool Equals(System.Object obj)
GetHashCode          Method     int GetHashCode()
GetNetworkCredential Method     System.Net.NetworkCredential GetNetworkCredential()
GetType              Method     type GetType()
ToString             Method     string ToString()
Password             Property   System.Security.SecureString Password {get;}
UserName             Property   System.String UserName {get;}

となっているので、このPSCredentialを作ってやればよい。
こいつのコンストラクタをみるとUserNameとPasswordを指定することが判る。
UserNameはStringなので問題なし。PasswordはSecureStringクラスとなっている。
幸いSecureStringクラスはConvertTo-SecureStringコマンドレットで作ることができる。

$password = ConvertTo-SecureString "PassHoge" -asplaintext -force
$cred = New-Object System.Management.Automation.PsCredential "UserHoge",$password

2 件のコメント:

  1. この情報がすごく参考になりました。
    ありがとうございます。
    今後もまた参考にさせてください。

    返信削除
  2. ダイレクトに使える情報で
    とても助かりました!

    返信削除