AD環境であればクライアントPCに対して、ログオンスクリプトやスタートアップスクリプトにてbatファイルを実行させる機会が少なからずあると思います。

そこで、この機能を使用して各PCでログオンしているユーザーの資格情報に何が登録されているか、正確には意図した資格情報が登録されているかを確認することとなり、
Windowsコマンドの「cmdkey」とログオンスクリプトを利用してテキストファイルに書き出すことにしました。

コマンド
===
@echo off
set FOLDERPASS=¥¥ファイルサーバのIP¥(隠し)共有フォルダ
set FILEPASS=%FOLDERPASS%¥%COMPUTERNAME%-%USERNAME%.log

cmdkey /list >> %FILEPASS
exit
===

上記コマンドをログオンスクリプトで実施することで、指定のサーバのフォルダに「コンピュータ名-ユーザー名.log」のファイルが出来上がり、あとは時間を置いて確認するだけと思っていたのだが、、、、、


実際にはファイルを見てみると、保存されている資格情報は「なし」と表示される。。。。。(-_-;)


なんでだーーーーーー


実際に手動でバッチファイルを叩くと正常に結果が出力されているのでbatファイルそのものに問題はない模様。
う〜〜ん、なぜ。。



ログオンスクリプトはログオン時に実行される(Windows8以降だとログオン5分経過後らしいが、)のでそのあたりでサービスが起動しきれていないものと推測し、pauseを入れて見るも駄目。
もう手動で1台ずつ調べていくのか〜と思っていたところ、諦めきれず色々調べた結果、下記のポリシーを発見

[ユーザーの構成]-[管理用テンプレート]-[システム]-[ログオン]
-[ユーザーのログオン時に実行するプログラムを指定する]


ここに先程のバッチファイルを指定してみることに
しかし、これだけだとネットワークフォルダ上のbatファイルを実行しているため、実際には実行する際に警告が出てしまう。

その為、警告が出ないように下記のポリシーも追加

[ユーザーの構成]-[管理用テンプレート]-[Windowsコンポーネント]-[Internet Explorer]-[インターネット コントロールパネル]-[セキュリティページ]
-[サイトとゾーンの割り当て一覧]

ここに実行するbatファイルを置いたIPを入力し、値は「1」(イントラネットゾーン)に指定


これで警告が出ずにbatファイルが実行され、出力されたテキストファイルを見ると、ちゃんと保存された資格情報が出力されていました!!!!


推測ですが、[ユーザーのログオン時に実行するプログラムを指定する]では、実際にユーザーがログオンしたセッションで実行されているため、うまく行ったのではないかと思います。
その証拠に実行時に、ログオンスクリプトではコマンドプロンプトの画面が一切確認出来ませんでしたが、[ユーザーのログオン時に実行するプログラムを指定する]では一瞬コマンドプロンプトの画面が表示されていました。
※ログオンスクリプトもログオンしたユーザーの権限でスクリプトが実行されているはずですが、実際には少し違うのかもしれませんね。。。。。(´・ω・`)



純粋にユーザーログオン時に実行させたい場合には、[ユーザーのログオン時に実行するプログラムを指定する]の方が有効なのかもしれませんね!!!
スポンサードリンク