Merhaba,
Yazmış olduğum bu script ile client makinelerine uzaktan bağlanarak RDP log ve Session log bilgilerini alabilirsiniz. Uzaktan çalıştığımız şu dönemlerde client’lar üzerinde log arşiv ürününüz bulunmuyor ise bu script bir nebze işini görecek ve anlamlandırılabilecek dataları sizlere sunar 🙂
Scripti çalıştırmadan önce iki adet dosya hazırlamamız gerekiyor.
Users.txt : Burada AD kullanıcılarımızın samAccountName bilgilerini içermektedir.
Logon_Users.csv: Bu csv içerisinde Computers;Users adında iki column bulunmaktadır ve hangi user’ın hangi bilgisayarı kullandığı bilgisini içermektedir. Kendi yapımızda bu bilgiyi SCCM üzerinde Primary Users query ise ile elde ettik iyi bir envanter sisteminiz var ise oradan da çekebilirsiniz.
Script, Users.txt içerisinde tüm kullanıcıları tek tek alır ve logon_users.csv dosyası içerisinde kullanıcının karşılığına gelen Computer bilgisini elde eder. Elde ettiği computer’a bağlanır ve gerekli data’ları alarak belirlediğimiz bir CSV dosyasına export eder.
$users = Get-Content C:\users.txt $computers = Import-Csv C:\logon_user.csv -Delimiter ";" -Encoding UTF8 $CSVPath = "C:\RDPLogDatas.csv" $i=-1 foreach($user in $computers.User){ $i++ foreach($u in $users){ if($u -eq $user){ $usercomputer = $computers.Computer.Get($i) $day =(Get-Date -Year 2020 -Month 3 -Day 28 -Hour 23 -Minute 30 -Second 00) #New-TimeSpan -End (Get-Date -Year 2020 -Month 3 -Day 23) $dayplus = (Get-Date -Year 2020 -Month 3 -Day 31 -Hour 8 -Minute 30 -Second 0) #New-TimeSpan -End (Get-Date -Year 2020 -Month 3 -Day 23) Write-Host -ForegroundColor Green "----------- " $usercomputer "---------------" $logsRDP = Get-WinEvent -LogName Microsoft-Windows-TerminalServices-LocalSessionManager/Operational -ComputerName $usercomputer | ? {($_.id -eq 25) -or ($_.id -eq 24) -or ($_.id -eq 21) -and ($_.TimeCreated -gt $day) -and ($_.TimeCreated -lt $dayplus)} | sort TimeCreated | select MachineName,Id,TimeCreated $logsSession = Get-EventLog -LogName Security -ComputerName $usercomputer -InstanceId 4801,4800 -Before $dayplus -After $day | sort TimeWritten | select MachineName,EventID,TimeWritten $logsRDP | Export-Csv $CSVPath -Append # Create new CSV and add RDP logs data to that file with appending. foreach($l in $logsSession){ $date = $l.TimeWritten.ToString("dd.MM.yyyy HH:mm") $line = $l.MachineName +","+ $l.EventID +","+ $date Add-Content -Path $CSVPath -Value $line # Add session logs data to CSV. } } } }