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); }
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); }
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); }