- PR -

net user コマンドについて

投稿者投稿内容
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 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
コマンドは正常に終了しました。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2006-07-28 08:32
引用:

INVENTさんの書き込み (2006-07-21 17:13) より:
net user **** /domainを実行して最終ログオン日時を調べていたのですが、
は正常に終了しました。



lastLogon属性では?
(ADSI Editで確認可能です。)

こちらに該当しているのでは?
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 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にこだわる理由としましては、
アカウント情報の参照をするのはオペレーターである為、
なるべく簡単な操作にしたいと思っています。

どうぞ宜しく御願いいたします。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2006-07-28 13:11
引用:

時間は表示される事はされるのですが正確な時間なのかわかりません。
理由としましては色々なアカウントでScriptを試したのですが、
ほとんどが23:53頃と表示され、自分のアカウントも、
Net user "User Name" /domainで表示される時間とScriptを
実行した際に表示される時間が合いません。



確認しました。
標準時のようなので...+9時間すれば、net userコマンドと同一の時刻表示になります。


ドメインコントローラが複数存在する場合は、MSサイトの情報にあるとおり、
全てのドメインコントローラを検索して調べるスクリプトを書く必要があると思います。
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 2006-07-28 15:23
こんにちは。

このScript内に+9時間の設定を定義するには
どのようにすれば良いのでしょうか?
Webを調べてもよくわかりません。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-28 16:18
こんにちは。

引用:

INVENTさんの書き込み (2006-07-28 15:23) より:
このScript内に+9時間の設定を定義するには
どのようにすれば良いのでしょうか?


DateAdd 関数 を利用して+9時間を実現できます。
TechNet の Date Arithmetic という記事に例が載っています。

コード:

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 + 9h: " & DateAdd("h", 9, intLastLogonTime + #1/1/1601#)



いかがでしょうか。

#DateAdd 関数 へのリンクを追記しました。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for Microsoft Office System - Microsoft Office System
(Jul 2006 - Jun 2007)
Hello Another World!

[ メッセージ編集済み 編集者: ue 編集日時 2006-07-28 17:05 ]
INVENT
常連さん
会議室デビュー日: 2006/03/10
投稿数: 42
投稿日時: 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=を変更しなくてはならず、
オペレータが間違えた値を入れかねない為、もし可能ならば教えて頂けますと
幸いです。

宜しく御願いいたします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-07-28 17:03
ueです。

引用:

また、上記部分のcn= ou= de=ですが、Scriptを実行した際に
手動で入力できるようにVBSで作ることは可能なのでしょうか?


可能です。
InputBox 関数 を使用します。

コード:
Dim cn
cn = InputBox("cn を入力してください", "cn 入力ダイアログ", "cn のデフォルト値")
Set objUser = GetObject("LDAP://cn=" & cn & ",OU=hoge,dc=jp,dc=hoge,dc=com")


こんな感じです。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島

スキルアップ/キャリアアップ(JOB@IT)