Пример #1
0
        private static IEnumerable <IWinEvent> _Find_DomainUserEvent(string[] ComputerName, DateTime StartTime, DateTime EndTime, int MaxEvents, string[] TargetUsers, Dictionary <string, string> Filter, System.Net.NetworkCredential Credential)

        {
            var Events = new List <IWinEvent>();

            foreach (var TargetComputer in ComputerName)

            {
                var Up = TestConnection.Ping(TargetComputer, 1);

                if (Up)

                {
                    var DomainUserEventArgs = new Args_Get_DomainUserEvent

                    {
                        ComputerName = new[] { TargetComputer },

                        StartTime = StartTime,

                        EndTime = EndTime,

                        MaxEvents = MaxEvents,

                        Credential = Credential
                    };

                    if (Filter != null || TargetUsers != null)

                    {
                        if (TargetUsers != null)

                        {
                            GetDomainUserEvent.Get_DomainUserEvent(DomainUserEventArgs).Where(x => TargetUsers.Contains((x is LogonEvent) ? (x as LogonEvent).TargetUserName : (x as ExplicitCredentialLogonEvent).TargetUserName));
                        }

                        else

                        {
                            var Operator = "or";

                            foreach (var key in Filter.Keys)

                            {
                                if ((key == "Op") || (key == "Operator") || (key == "Operation"))

                                {
                                    if ((Filter[key].IsRegexMatch("&")) || (Filter[key] == "and"))

                                    {
                                        Operator = "and";
                                    }
                                }
                            }

                            var Keys = Filter.Keys.Where(x => (x != "Op") && (x != "Operator") && (x != "Operation"));

                            var events = GetDomainUserEvent.Get_DomainUserEvent(DomainUserEventArgs);

                            foreach (var evt in events)

                            {
                                if (Operator == "or")

                                {
                                    foreach (var Key in Keys)

                                    {
                                        if (evt.GetPropValue <string>(Key).IsRegexMatch(Filter[Key]))

                                        {
                                            Events.Add(evt);
                                        }
                                    }
                                }

                                else

                                {
                                    // and all clauses

                                    foreach (var Key in Keys)

                                    {
                                        if (!evt.GetPropValue <string>(Key).IsRegexMatch(Filter[Key]))

                                        {
                                            break;
                                        }

                                        Events.Add(evt);
                                    }
                                }
                            }
                        }
                    }

                    else

                    {
                        GetDomainUserEvent.Get_DomainUserEvent(DomainUserEventArgs);
                    }
                }
            }



            return(Events);
        }
Пример #2
0
 public static IEnumerable <IWinEvent> Get_UserEvent(Args_Get_DomainUserEvent args = null)
 {
     return(GetDomainUserEvent.Get_DomainUserEvent(args));
 }