読者です 読者をやめる 読者になる 読者になる

【備忘録】Get-Credentialコマンド

ファイル共有にアクセスするバッチ作ってました。

っていっても、net useしてxcopyするだけなんですけどね。

ただ本番作業するのって、基本2人体制でして、バッチで作って

アカパス入力させるにしてもパスワード丸見えでよろしくないんですよね。

で、なんかマスクする方法ないか調べてました。

vbs使ってうんたらかんたらやればできそうなんですが、かなりめんどくさそう。

他になんか無いか探してたら↓こんなんありました。

http://tech.guitarrapc.com/entry/2014/01/14/101056

powershellで実現できました。

結論だけ言うと、

?$cred = Get-Credential -Credential UserName

?$cred.UserName

?$cred.GetNetworkCredential().Password

?でアカパス入力ウィンドウ表示

?で入力されたユーザ名取得

?で入力されたパスワード取得

です。

Get-Credentialコマンドってやつですが、共有フォルダにアクセス

しにいくときに出てくるアレが出てきます。

デフォでパスワードにマスクかかってます。

いい感じw

ただこれ、キャンセルボタン押したときがエラーになっちゃうんですよね。

なんで、ちょっとうまくエラー処理しないといけない感じです。

help見るとオプションが「-Credential」しかないんですが、会社のwin10環境だと

-messageと-UserNameなんぞというオプションがありました。

バージョンの違いだったりするんですかね。

-messageでユーザ名の上に出てくる文言を変更できました。

-UserNameはよくわからん(´・ω・`)

これ付けると最初に入ってるユーザ名変えられますが、-Credentialでも同じ動作でした。

詳しく調べてませんが、たぶんちょっと意味合いが違うんでしょうけどね。

で、もうひとつ課題。

powershellコマンドなんで、バッチから起動させるには↓みたいに書けば行ける。

powershell $cred = Get-Credential -Credential UserName

ただ、これだとpowershell上で起動されてそのまま破棄されちゃうので、

もうちょい改良の余地あり。

powershell $cred = Get-Credential -Credential $UserName;^

$cred.UserName|out-file UserName.txt;^

$cred.GetNetworkCredential().Password|out-file Password.txt

これでファイルに書き出せるので、あとは読み込んでファイル削除すれば完了。

受け渡しがめんどいときは、邪道ですがファイル経由で渡すのが一番手っ取り早いw

処理遅くなるだろうしメモリ間で渡せるならそっちのほうがいいでしょうけどね。

1行の長いやつの場合見辛いので、バッチの場合行末に「^」を入れることで改行してやれます。

VBAだと「_」(アンダーバー)ですが、バッチは今回調べて初めて知りました・・・

「^」の読み方分かってないですが、そういえば計算でもコレ使えるんですよね。

セルに「=5^3」とか書いてやると5の3乗を計算してくれる。

あんま使う機会も無さそうですが、これも最近知った。。。

まぁそんな感じでした。