0

DC からのセキュリティ監査エラーであるユーザー名を含む特定のイベント ログを取得しようとしています。powershell では、次のような方法で簡単に実行できます。

変数は次のようになります: $DC = "MyDomainController" and $user = "jdoe"

Get-WinEvent -ComputerName $DC -FilterHashtable @{Logname='Security';Keywords='4503599627370496';Data=$user} -MaxEvents 4 | Format-List -Property ID, TimeCreated, MachineName, Message

これは、私が見ているDCからの人のユーザー名でセキュリティ監査の失敗である4つのイベントログを引き出しますが、vb.netでこの動作を見つけたり再現したりすることができませんでした。数日間、DC のすべてのログを書き込んで取得しましたが、フィルタリングはしていません。ヘルプやガイダンスは素晴らしいものです。

4

1 に答える 1

0

xpath を使用してカスタム ログ クエリを調べることで、これに対する答えを見つけることができました。C# で次のことを行いましたが、VB でも同じことが適用でき
ます
。 Statustextboxを検索する AD ユーザー名
= すべてのログをテキストボックスに移動して読み取るようにしていますが、console.writeline のようなことを行うこともできます

private void LookupLogs_Click(object sender, EventArgs e)
    {
        Statustextbox.Clear();
        string query = "<QueryList>" +
                       "  <Query Id=\"0\" Path=\"Security\">" +
                       "    <Select Path=\"Security\">" +
                       "        *[System[band(Keywords,4503599627370496)]] and *[EventData[Data[@Name='TargetUserName'] and (Data='" + Username.Text + "')]]" +
                       "    </Select>" +
                       "  </Query>" +
                       "</QueryList>";
        EventLogSession session = new EventLogSession(DomainController.Text);
        EventLogQuery evntquery = new EventLogQuery("Security", PathType.LogName, query);
        evntquery.Session = session;
        try
        {
            EventLogReader logreader = new EventLogReader(evntquery);
            DisplayEventAndLogInformation(logreader);
        }
        catch (Exception ex)
        {
            MessageBox.Show("An exception occured: " + ex.Message);
        }
    }

private void DisplayEventAndLogInformation(EventLogReader logReader)
    {
        for (EventRecord eventInstance = logReader.ReadEvent();
            null != eventInstance; eventInstance = logReader.ReadEvent())
        {
            Statustextbox.AppendText(Environment.NewLine + Environment.NewLine);
            Statustextbox.AppendText("---------------------------------------------------------------------------------------------------------------------------------------------------------------" + Environment.NewLine);
            Statustextbox.AppendText("Event ID: " + eventInstance.Id + Environment.NewLine);
            Statustextbox.AppendText("Publisher: " + eventInstance.ProviderName + Environment.NewLine);

            try
            {
                Statustextbox.AppendText("Description: " + eventInstance.FormatDescription() + Environment.NewLine);
            }
            catch (EventLogException ex)
            {
                Statustextbox.AppendText("An exception was thrown: " + ex.Message + Environment.NewLine);
            }
            EventLogRecord logRecord = (EventLogRecord)eventInstance;
            Statustextbox.AppendText(Environment.NewLine);
            Statustextbox.AppendText("Container Event Log: " + logRecord.ContainerLog + Environment.NewLine);
        }
    }
于 2016-05-11T13:27:28.920 に答える