none
ログオン/ログオフスクリプトでのローカルログオン情報取得 RRS feed

  • 質問

  • お世話になっております。

    AD管理下にてドメインポリシーにログオン/ログオフスクリプトを適用し、コンピュータにログオン/ログオフした際にユーザー名、コンピュータ名を取得するスクリプトを作成いたしました。

    デフォルトドメインポリシーの"ユーザーの構成"にコピーしたため、スクリプトにより取得できるユーザー名はドメインユーザーのみです。ローカルアカウントでログオン/ログオフしたときにもユーザー情報とコンピュータ名を取得したいのですが何かよい方法はないでしょうか?

    行いたいこととは、ドメインすべてのユーザーとコンピュータを対象とし、ドメインアカウントまたはローカルアカウントでログオン/ログオフしたときユーザー名とコンピュータ名の取得を行うことです。

    以下は、現在のスクリプトです。

    Const AUDIT_SUCCESS = 8

    REM Create Objects
    Set objShell = WScript.CreateObject("WScript.Shell")
    Set objNetwork = WScript.CreateObject("WScript.Network")
    Set objADsys = CreateObject("ADSystemInfo")

    REM Build a message string
     strMsg = "<Logon> ユーザ" + objNetwork.UserName + " が、ドメイン" + _
            objNetwork.Userdomain + " (サーバー" + objADsys.GetAnyDCName + _
            ")にログオンしました。"

    REM Write to Eventlog
     objShell.LogEvent AUDIT_SUCCESS,strMsg,objADSys.GetAnyDCName

    Set objShell = Nothing
    Set objNetwork = Nothing
    Set objADSys = Nothing

    以上、よろしくお願いいたします。

     

    2012年1月14日 22:38

回答

  • チャブーンです。

    ローカルユーザーがログオンするときには、(ドメインユーザーが参照する)グループポリシー(ログオンスクリプト)にはアクセスしないので、アクセスするためのしくみを、各コンピュータ上でそれぞれ設定する必要があります。

    ひとつの方法として、各コンピュータ上の「ローカルユーザーの」ログオンスクリプトパスを設定し、スクリプトパスに対してドメインとは違うログオンスクリプトを置くことで、「ローカル用のログオン記録のファイル」を作成することができるかもしれません。ですが、様々な条件(どうやって「ローカルユーザーの」ログオンスクリプトパスを各マシンに設定するか、どういう内容のスクリプトを組むか、とか複数のローカルコンピュータ権限でアクセスできるアクセス許可をどう設定するか等)、確かめることがたくさんあり、簡単に実行できる話しではないでしょう。

    「ローカルユーザーの」ログオンスクリプトパス、は、[ローカルユーザーとグループ]スナップインからユーザーアカウントを右クリック [プロパティ] - [プロファイル]、から確認できます。

    うえ以外の方法だと、タスクスケジュールを使った方法(ログオン時にスクリプトを実行する)もあり得るかもですが、既存の方法(グループポリシーによる設定)との兼ね合いから、これも簡単には実行できないように思います。

    簡単にすませる、というのならイベントログとの併用(ローカルユーザーのログオンは各コンピュータのイベントログでチェック)という方法もあると思いますが、そもそもそのような「セキュリティ上重要なチェックが必要」な社内環境でしたら、「ローカルアカウントは使わせない」という運用が適切かもしれません。利用者にUsers/Domain Users権限のアカウントだけを使ってもらえれば、(利用者が勝手に作った)ローカルアカウントの管理に悩まされることもありません。

    • 回答としてマーク 田中夢 2012年1月27日 2:05
    2012年1月18日 1:14
    モデレータ

すべての返信

  • チャブーンです。

    ローカルユーザーがログオンするときには、(ドメインユーザーが参照する)グループポリシー(ログオンスクリプト)にはアクセスしないので、アクセスするためのしくみを、各コンピュータ上でそれぞれ設定する必要があります。

    ひとつの方法として、各コンピュータ上の「ローカルユーザーの」ログオンスクリプトパスを設定し、スクリプトパスに対してドメインとは違うログオンスクリプトを置くことで、「ローカル用のログオン記録のファイル」を作成することができるかもしれません。ですが、様々な条件(どうやって「ローカルユーザーの」ログオンスクリプトパスを各マシンに設定するか、どういう内容のスクリプトを組むか、とか複数のローカルコンピュータ権限でアクセスできるアクセス許可をどう設定するか等)、確かめることがたくさんあり、簡単に実行できる話しではないでしょう。

    「ローカルユーザーの」ログオンスクリプトパス、は、[ローカルユーザーとグループ]スナップインからユーザーアカウントを右クリック [プロパティ] - [プロファイル]、から確認できます。

    うえ以外の方法だと、タスクスケジュールを使った方法(ログオン時にスクリプトを実行する)もあり得るかもですが、既存の方法(グループポリシーによる設定)との兼ね合いから、これも簡単には実行できないように思います。

    簡単にすませる、というのならイベントログとの併用(ローカルユーザーのログオンは各コンピュータのイベントログでチェック)という方法もあると思いますが、そもそもそのような「セキュリティ上重要なチェックが必要」な社内環境でしたら、「ローカルアカウントは使わせない」という運用が適切かもしれません。利用者にUsers/Domain Users権限のアカウントだけを使ってもらえれば、(利用者が勝手に作った)ローカルアカウントの管理に悩まされることもありません。

    • 回答としてマーク 田中夢 2012年1月27日 2:05
    2012年1月18日 1:14
    モデレータ
  • こんにちは。
    フォーラム オペレーターの田中夢です。

    チャブーン さん
    参考になるアドバイスをありがとうございます。

    325po5 さん
    質問を投稿されてからしばらく経ちましたが、その後 チャブーン さんの投稿をご覧になっていただけましたか?

    今回のご質問につきましては、チャブーン さんの投稿を参考にしていただけたのではないかと思われますので、勝手ながら私のほうで [回答としてマーク] とさせていただきますね。


    今後とも TechNet フォーラムをどうぞよろしくお願いします。
    ---------------------------------------------------------------------
    日本マイクロソフト株式会社 フォーラム オペレーター 田中夢

    2012年1月27日 2:05