Сценарий Powershell Аудит входа пользователей в удаленный рабочий стол - PullRequest
0 голосов
/ 21 февраля 2019

Я нашел скрипт, который регистрирует всех пользователей серверов RDS, который отлично работает;

Ссылка здесь

Однако я хочу сделать его специфичным для 1 пользователя, а невсе пользователи.

Я действительно не знаю powershell, поэтому нужна помощь.

Param(
[array]$ServersToQuery = (hostname),
[datetime]$StartTime = "January 1, 1970"

)

foreach ($Server in $ServersToQuery) {

    $LogFilter = @{
        LogName = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'
        ID = 21, 23, 24, 25
         StartTime = (get-date).adddays(-7)
        }

    $AllEntries = Get-WinEvent -FilterHashtable $LogFilter -ComputerName $Server

    $AllEntries | Foreach { 
        $entry = [xml]$_.ToXml()
        [array]$Output += New-Object PSObject -Property @{
            TimeCreated = $_.TimeCreated
            User = $entry.Event.UserData.EventXML.User
            IPAddress = $entry.Event.UserData.EventXML.Address
            EventID = $entry.Event.System.EventID
            ServerName = $Server
            }        
        } 

}

$FilteredOutput += $Output | Select TimeCreated, User, ServerName, IPAddress, @{Name='Action';Expression={
            if ($_.EventID -eq '21'){"logon"}
            if ($_.EventID -eq '22'){"Shell start"}
            if ($_.EventID -eq '23'){"logoff"}
            if ($_.EventID -eq '24'){"disconnected"}
            if ($_.EventID -eq '25'){"reconnection"}
            }
        }

$Date = (Get-Date -Format s) -replace ":", "."
$FilePath = "$env:USERPROFILE\Desktop\$Date`_RDP_Report.csv"
$FilteredOutput | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation

Write-host "Запись файла: $ FilePath"-ForegroundColor Cyan Write-host "Готово!"-ForegroundColor Cyan

1 Ответ

0 голосов
/ 21 февраля 2019

Итак, вы говорите ...

(Я действительно не знаю, PowerShell, поэтому нужна помощь.)

..., но указывают на очень продвинутыйСкрипт PowerShell, который вы хотите использовать.

Очень важно, чтобы вы не использовали чей-либо код, поскольку вы не до конца понимаете, что он делает от кого-либо.Вы можете серьезно повредить / скомпрометировать вашу систему (системы) и / или всю вашу компанию.Пожалуйста, примите меры, чтобы защитить себя, свое предприятие и избежать ненужной путаницы, сложностей, проблем, ошибок и разочарований, с которыми вы столкнетесь:

Перейдите по этой ссылке

Что касаетсяВаш запрос ...

Однако я хочу сделать его конкретным для 1 пользователя, а не для всех пользователей.

… Хотя скрипт возвращает всех пользователей, вы можете просто отфильтровать/ запрос для одного пользователя, за которым вы работаете, без каких-либо изменений в коде авторов.

Запрос пользователя, добавив дополнительный параметр в этот блок параметров

[string]$targetUser = (Read-Host -Prompt 'Enter a username')

В этом $ FilteredOutputв разделе, где вы можете использовать дополнительный параметр $ targetUser, используя командлет Where-Object или соответствующую ему строку или в разделе….

$FilteredOutput | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation

….Что-то вроде ...

($FilteredOutput -match $TargetUser) | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation

У меня нет среды для тестирования, поэтому я оставлю это на ваше усмотрение.

$ FilteredOutput |Сортировать ВремяСоздано |Export-Csv $ FilePath -NoTypeInformation Это базовый сценарий использования PowerShell с использованием параметров, который рассматривается во всех начальных курсах PowerShell, книгах, веб-сайтах и ​​встроенных файлах справки PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...