Пример #1
0
        private List <ADuser> PS_GetPasswordExpired()
        {
            //spustí PowerShell script na vyhledání uživatelů s naposledy zamklým účtem
            List <ADuser> userList = new List <ADuser>();

            using (var runspace = RunspaceFactory.CreateRunspace())
            {
                using (var powerShell = PowerShell.Create())
                {
                    log("Procházím účty s expirací hesla.");
                    powerShell.Runspace = runspace;
                    powerShell.Runspace.Open();
                    powerShell.AddScript(@"$samaccountname = ""*"";$ADusers = get-ADuser -filter ""samaccountname -like '$samaccountname'"" -Properties Name,pwdLastSet,PasswordNeverExpires,enabled,logonCount|Sort-Object sAMAccountname;$userListPass = @()");
                    powerShell.AddScript("ForEach($ADuser in $ADusers){if (($ADuser.enabled -eq $true)-and($ADuser.PasswordNeverExpires -eq $false)){ $lastchange = [datetime]::FromFileTime($ADuser.pwdlastset[0]);$today = Get-Date;$timediff = New-TimeSpan $lastchange $(Get-Date);$selected_user = New-Object psobject;$selected_user | Add-Member NoteProperty -Name 'name' -Value $ADuser.name;$selected_user | Add-Member NoteProperty -Name 'sAMAccountname' -Value $ADuser.sAMAccountname;$selected_user | Add-Member NoteProperty -Name 'dateOfPasswSet' -Value $lastchange;$selected_user | Add-Member NoteProperty -Name 'daysFromChange' -Value $timediff.Days;$userListPass+=$selected_user }else{}} $userListPass | Select name,sAMAccountname,dateOfPasswSet,daysFromChange,passwordExpired");
                    PSObject[] results = powerShell.Invoke().ToArray();
                    foreach (PSObject result in results)
                    {
                        ADuser user1 = new ADuser();
                        try { user1.nameFull = result.Members["name"].Value.ToString(); } catch { }
                        try { user1.nameAcco = result.Members["sAMAccountname"].Value.ToString(); } catch { }
                        try { user1.passwordDateLastSet = result.Members["dateOfPasswSet"].Value.ToString(); } catch { }
                        try { user1.PasswordDayFromChange = Convert.ToInt32(result.Members["daysFromChange"].Value.ToString()); } catch { }
                        userList.Add(user1);
                    }
                    log("Dokončeno. Seznam naposledy zamklé účty.");
                }
            }
            return(userList);
        }
Пример #2
0
        private List <ADuser> PS_GetOldLockedAccounts()
        {
            //spustí PowerShell script na vyhledání uživatelů s naposledy zamklým účtem
            List <ADuser> userList = new List <ADuser>();

            using (var runspace = RunspaceFactory.CreateRunspace())
            {
                using (var powerShell = PowerShell.Create())
                {
                    log("Zjišťuji naposledy zablokované účty.");
                    powerShell.Runspace = runspace;
                    powerShell.Runspace.Open();
                    powerShell.AddScript("$timeNow = (Get-Date -Format 'dd/MM/yyyy'); $DomainControllers = Get-ADDomainController -Filter * ; $PDCEmulator = ($DomainControllers | Where-Object {$_.OperationMasterRoles -contains 'PDCEmulator'}); $LockedOutEvents = Get-WinEvent -ComputerName $PDCEmulator.HostName -FilterHashtable @{LogName='Security';Id=4740} -ErrorAction Stop | Sort-Object -Property TimeCreated -Descending; $LockedOutEventsMessage = New-Object System.Collections.Generic.List[System.Object];");
                    powerShell.AddScript("Foreach($event in $LockedOutEvents){$eventXML = [xml]$event.ToXml(); $eventArray = New-Object -TypeName PSObject -Property @{EventID = $event.id;EventRecordID = $event.RecordId;EventTimeDate = Get-Date $event.timecreated -Format 'dd/MM/yyyy';EventTime = Get-Date $event.timecreated -Format 'HH:mm:ss';EventDay = $event.timecreated.Day;LockedAccount = $eventXML.Event.EventData.Data[0].'#text' ;FromComputer = $eventXML.Event.EventData.Data[1].'#text' ;OnServer = $eventXML.Event.EventData.Data[4].'#text' };if($timeNow -le ($eventArray.EventTimeDate)){$LockedOutEventsMessage.add($eventArray)}}");
                    powerShell.AddScript("$LockedOutEventsMessage | select LockedAccount,FromComputer,EventTime,EventTimeDate,EventRecordID");
                    PSObject[] results = null;
                    try
                    {
                        //pokus kvůli možnému nevrácení výsledků
                        results = powerShell.Invoke().ToArray();
                    }
                    catch { }

                    if (results != null)
                    {
                        //ošetření erroru při uspání PC  /\

                        foreach (PSObject result in results)
                        {
                            ADuser user1 = new ADuser();
                            try { user1.nameAcco = result.Members["LockedAccount"].Value.ToString(); } catch { }
                            try { user1.lockFrom = result.Members["FromComputer"].Value.ToString(); } catch { }
                            try { user1.lockTime = result.Members["EventTime"].Value.ToString(); } catch { }
                            try { user1.lockDate = result.Members["EventTimeDate"].Value.ToString(); } catch { }
                            try { user1.eventID = result.Members["EventRecordID"].Value.ToString(); } catch { }
                            userList.Add(user1);
                        }
                        log("Dokončeno. Seznam naposledy zamklé účty.");
                    }
                }
            }
            return(userList);
        }
Пример #3
0
        private List <ADuser> PS_SearchLocketAccounts()
        {
            //spustí PowerShell script na vyhledání uživatelů se zamklým účtem
            List <ADuser> userList = new List <ADuser>();

            using (var runspace = RunspaceFactory.CreateRunspace())
            {
                using (var powerShell = PowerShell.Create())
                {
                    log("Hledám zamklé uživatelské účty.");
                    powerShell.Runspace = runspace;
                    powerShell.Runspace.Open();
                    powerShell.AddScript("Search-ADAccount –LockedOut | select name, samaccountname");
                    PSObject[] results = powerShell.Invoke().ToArray();
                    foreach (PSObject result in results)
                    {
                        ADuser user1 = new ADuser();
                        try { user1.nameFull = result.Members["name"].Value.ToString(); } catch { }
                        try { user1.nameAcco = result.Members["samaccountname"].Value.ToString(); } catch { }
                        userList.Add(user1);
                    }

                    if (powerShell.HadErrors == true)
                    {
                        //var test = powerShell.Streams.Error.ElementAt(0).Exception.Message;
                        MessageBox.Show("Chyba při provádění skriptu.");
                        foreach (var error in powerShell.Streams.Error)
                        {
                            MessageBox.Show("Chyba: " + error.Exception.Message);
                        }
                    }

                    log("Dokončeno. Hledani zamklých uživatelů.");
                }
            }
            return(userList);
        }