- - PR -
net user コマンドについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-21 17:13
こんにちはINVENTと申します。
会社を退社したユーザーの情報を表示させる為、 net user **** /domainを実行して最終ログオン日時を調べていたのですが、 ログオン日時が表示されないユーザーがいる為、困っています。 表示されなくなる前(1週間前位)までは、ログオン日時が表示されていました。 どのようにすれば表示されるのでしょうか? また、net user **** /domainを実行する事により、 ドメインコントローラのどこを参照して、ユーザー情報を表示して いるのでしょうか? 初歩的な事でしたら大変恐縮なのですが、 どなたかお分かりになりましたら、ご教授下さい。 宜しく御願いいたします。 ====以下 参考==== X:\>net user J1234 /domain この要求はドメイン hoge.com のドメイン コントローラで処理されます。 ユーザー名 J1234 フル ネーム Hanako Yamada コメント 山田 花子 ユーザーのコメント 国コード 000 (システム既定) アカウント有効 Yes アカウントの期限 無期限 最終パスワード変更日時 2006/06/01 9:00 パスワード有効期間 2006/07/31 9:00 パスワード次回変更可能日時 2006/06/01 8:55 パスワードあり Yes ユーザーによるパスワード変更可能 Yes ログオン可能なワークステーション すべて ログオン スクリプト hoge.BAT ユーザー プロファイル ホーム ディレクトリ \\hoge\J1234 最終ログオン日時 なし <------ここが表示されない。 ログオン可能時間 すべて 所属しているローカル グループ 所属しているグローバル グループ *Domain Users コマンドは正常に終了しました。 | ||||||||
|
投稿日時: 2006-07-28 08:32
lastLogon属性では? (ADSI Editで確認可能です。) こちらに該当しているのでは? | ||||||||
|
投稿日時: 2006-07-28 12:18
Windows2000 ServerのActiveDirectoryから
ユーザーのlastLogon情報を引き出したいと思っています。 以下、MSのサイトに記載されているスクリプトをそのまま使用しました。 http://www.microsoft.com/japan/technet/scriptcenter/topics/win2003/lastlogon.mspx ただし、Windows2000にはlastLogonTimestampがないのでlastLogonに変更しています。 以下のようなScriptを実行すると、 **************************************************************************** Set objUser = GetObject("LDAP://cn=taro yamada,OU=hoge,dc=jp,dc=hoge,dc=com") Set objLastLogon = objUser.Get("lastLogon") intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart intLastLogonTime = intLastLogonTime / (60 * 10000000) intLastLogonTime = intLastLogonTime / 1440 Wscript.Echo "Last logon time: " & intLastLogonTime + #1/1/1601# **************************************************************************** 時間は表示される事はされるのですが正確な時間なのかわかりません。 理由としましては色々なアカウントでScriptを試したのですが、 ほとんどが23:53頃と表示され、自分のアカウントも、 Net user "User Name" /domainで表示される時間とScriptを 実行した際に表示される時間が合いません。 計算式が間違えているのでしょうか? 自分はScriptなどの知識がない為、このような質問なのですが どなたかお分かりになる方がいましたらご教授いただきたく御願いいたします。 また、ActiveDirectoryの設定やADSI Editを使う事により、 net user hoge /domainでラストログイン日時を表示させる事は できませんでしょうか? net userにこだわる理由としましては、 アカウント情報の参照をするのはオペレーターである為、 なるべく簡単な操作にしたいと思っています。 どうぞ宜しく御願いいたします。 | ||||||||
|
投稿日時: 2006-07-28 13:11
確認しました。 標準時のようなので...+9時間すれば、net userコマンドと同一の時刻表示になります。 ドメインコントローラが複数存在する場合は、MSサイトの情報にあるとおり、 全てのドメインコントローラを検索して調べるスクリプトを書く必要があると思います。 | ||||||||
|
投稿日時: 2006-07-28 15:23
こんにちは。
このScript内に+9時間の設定を定義するには どのようにすれば良いのでしょうか? Webを調べてもよくわかりません。 | ||||||||
|
投稿日時: 2006-07-28 16:18
こんにちは。
DateAdd 関数 を利用して+9時間を実現できます。 TechNet の Date Arithmetic という記事に例が載っています。
いかがでしょうか。 #DateAdd 関数 へのリンクを追記しました。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for Microsoft Office System - Microsoft Office System (Jul 2006 - Jun 2007) Hello Another World! [ メッセージ編集済み 編集者: ue 編集日時 2006-07-28 17:05 ] | ||||||||
|
投稿日時: 2006-07-28 16:34
こんにちは。
ご返答ありがとうございます。 教えていただきました通りに行いましたら問題なく行えました。 ありがとうございます。もう少し自分なりに勉強したいと思います。 Set objUser = GetObject("LDAP://cn=taro yamada,OU=hoge,dc=jp,dc=hoge,dc=com") また、上記部分のcn= ou= de=ですが、Scriptを実行した際に 手動で入力できるようにVBSで作ることは可能なのでしょうか? 今の状態ですと、ユーザー毎にScript内のcn= ou= de=を変更しなくてはならず、 オペレータが間違えた値を入れかねない為、もし可能ならば教えて頂けますと 幸いです。 宜しく御願いいたします。 | ||||||||
|
投稿日時: 2006-07-28 17:03
ueです。
可能です。 InputBox 関数 を使用します。
こんな感じです。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 |