PowerShell ile RDP session log kayitlari (tr TR) - EmreOzanMemis/PowerShell-WindowsServer-Scripts GitHub Wiki
Event log kayıtlarında arama yaparak RDP logon ve logoff kayıtlarını filtreleyebilecek ve size listeleyecek bu script ile bir çok raporlama gerçekleştirebilirsiniz. ID ve type girişlerini düzenleyerek scripti kendinize göre düzenleyebilirsiniz. Kullanım amacı RDP sessionlarını tespit etmek için hazırlanan aşağıdaki kod ile hangi kullanıcı hangi tairh ve saatte giriş yapmış ne zaman çıkış yapmış görüntüleyebilirsiniz.
PowerShell
powershell
$logs = get-eventlog system -ComputerName powershell-ozan -source Microsoft-Windows-Winlogon -After (Get-Date).AddDays(-7); $res = @(); ForEach ($log in $logs) {if($log.instanceid -eq 7001) {$type = "Logon"} Elseif ($log.instanceid -eq 7002){$type="Logoff"} Else {Continue} $res += New-Object PSObject -Property @{Time = $log.TimeWritten; "Event" = $type; User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}}; $res
$logs = get-eventlog system -ComputerName powershell-ozan -source Microsoft-Windows-Winlogon -After (Get-Date).AddDays(-7); $res = @(); ForEach ($log in $logs) {if($log.instanceid -eq 7001) {$type = "Logon"} Elseif ($log.instanceid -eq 7002){$type="Logoff"} Else {Continue} $res += New-Object PSObject -Property @{Time = $log.TimeWritten; "Event" = $type; User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}}; $res
PowerShell çıktısı aşağıdaki gibidir.
PowerShell
powershell
PS C:\Users\Administrator> $logs = get-eventlog system -ComputerName powershell-ozan -source Microsoft-Windows-Winlogon -After (Get-Date).AddDays(-7); PS C:\Users\Administrator> $res = @(); ForEach ($log in $logs) {if($log.instanceid -eq 7001) {$type = "Logon"} Elseif ($log.instanceid -eq 7002){$type="Logoff"} Else {Continue} $res += New-Object PSObject -Property @{Time = $log.TimeWritten; "Event" = $type; User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}}; PS C:\Users\Administrator> $res Time User Event ---- ---- ----- 31.05.2019 09:16:58 POWERSHELL-OZAN\Administrator Logon 30.05.2019 18:11:02 POWERSHELL-OZAN\Administrator Logoff
PS C:\Users\Administrator> $logs = get-eventlog system -ComputerName powershell-ozan -source Microsoft-Windows-Winlogon -After (Get-Date).AddDays(-7); PS C:\Users\Administrator> $res = @(); ForEach ($log in $logs) {if($log.instanceid -eq 7001) {$type = "Logon"} Elseif ($log.instanceid -eq 7002){$type="Logoff"} Else {Continue} $res += New-Object PSObject -Property @{Time = $log.TimeWritten; "Event" = $type; User = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}}; PS C:\Users\Administrator> $res Time User Event ---- ---- ----- 31.05.2019 09:16:58 POWERSHELL-OZAN\Administrator Logon 30.05.2019 18:11:02 POWERSHELL-OZAN\Administrator Logoff