過去 30 日間または 2 つの日付の間に Windows サーバー (具体的には 2008 R2) にログオンしたユーザーのリストをプログラムで収集する方法はありますか? アクティブ ディレクトリ サーバーが 2 つあり、すべてのユーザーは同じドメインのメンバーです。
私の最終目標は、SPLA の理由から、各サーバーの一意のユーザーのリストを自動的に取得することです。
答え1
これはプログラム経由ではなく手動で行いますが、イベント ビューアーでフィルターを作成して、ログイン イベントだけを表示することができます。フォルダーを右クリックしてオプションCustom Views
を選択しますCreate Custom View
。残念ながら、このフィルターでは XML を編集する必要があります。フィルターの XML は次のようになります。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='LogonType'] and (Data='2' or Data='10' or Data='11')]]
</Select>
<Suppress Path="Security">
*[EventData[Data[@Name='TargetDomainName'] and (Data = 'Window Manager')]]
</Suppress>
</Query>
</QueryList>
これを編集して、ログオン タイプ 7 (ロックされたセッションのロック解除) も含めることもできます。ログオン タイプ コードの詳細については、次のリンクを参照してください。
http://www.windowsecurity.com/articles-tutorials/misc_network_security/ログオンタイプ.html
これは日付範囲でフィルタリングするのではなく、ログインのみでフィルタリングすることに注意してください。ただし、その部分を絞り込むと、イベント ビューアーで日付範囲を手動で参照するのは簡単です。
残念ながら、ファイアウォールをオフにしても、「別のコンピューターに接続」オプションを使用した場合、このフィルターは機能しませんでした。
答え2
簡単な方法はありません。セキュリティ ログを調べることが最初に思い浮かびます。イベント ID 4624 を探します。ログオンの種類に注意してください (対話型ログオンをカウントする場合は 2、10、11)。
セキュリティ ログ エントリが生成される速度とログのサイズによっては、30 日サイクルの前にログが上書きされる場合があります。
中央の場所にカウントを実行するログイン スクリプトを強制する方が適切です。