PowerShell脚本审核远程桌面用户登录



我找到了一个脚本,该脚本记录了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:USERPROFILEDesktop$Date`_RDP_Report.csv"
$FilteredOutput | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation

写入主持人"写作文件:$ filepath" - foregroundColor青色写主机"完成!"-ForegroundColor Cyan

所以,你说…

(我真的不知道PowerShell,所以需要一些帮助。)

...,但要指出您要使用的非常高级的PowerShell脚本。

至关重要的是,您不使用任何人的代码,即您不完全了解任何人的作用。您可能会严重损坏/妥协系统和或或或或整个企业。请加快保护自己,企业,避免您将遇到的不必要的混乱,并发症,问题,错误和挫败感:

遵循此链接

至于您的查询...

但是,我想专门针对1个用户,而不是所有用户。

…尽管脚本返回了所有用户,但您只需过滤/提示您所追求的一个用户,而无需更改有关作者代码的任何内容。

通过在该param块中添加附加参数来提示用户

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

在该$ filterEdoutput部分中,您将使用其他$ targetuser参数,使用wery-object cmdlet或匹配的字符串或…。

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

…部分。类似...

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

我没有一个可以测试的环境,所以,我将其保留给您。

$ efftereDoutput |排序时间|Export -CSV $ FILEPATH -NOTYPEINFORMATION这是所有基本的PowerShell使用参数'用例,并且在所有开始的PowerShell课程,书籍,网站和内置的PowerShell帮助文件中涵盖。

最新更新