因此,正如标题所说:我正在尝试编写一个PowerShell脚本,该脚本检查是否有任何用户帐户已添加到本地管理员组中,或者是否已被添加为本地计算机上的管理员。我一直在使用Get-EventLog和Get-WinEvent来尝试完成我想要做的事情。我遇到的问题是从事件日志中隔离或提取我想要的信息。
这就是我到目前为止所知道的:
$Date = ((Get-Date).AddDays(-1)).Date
$Events = Get-WinEvent -FilterHashtable @{
StartTime = $Date
LogName = 'Security'
ProviderName = 'Microsoft-Windows-Security-Auditing'
ID = 4732
}
我想,如果我可以获得添加的帐户的用户名、它被授予的组或权限以及它的创建日期,我就可以有选择地输出过去24小时内每个日志的信息。我不确定我是应该尝试使用Get-Item还是Get-Content,或者是否应该尝试使用其他方法来解决这个问题。
发布于 2021-04-07 04:28:26
除非您安装了powershell v6.0+,否则您将需要使用-FilterXPath
:
$Alerts = Get-WinEvent -LogName Security -FilterXPath @'
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[
EventID=4732 and
TimeCreated[timediff(@SystemTime) <= 604800000]]] and
*[EventData[Data[@Name="TargetDomainName"]='BUILTIN']] and
*[EventData[Data[@Name='TargetUserName']='Administrators']]
</Select>
</Query>
</QueryList>
'@
如果您运行的是PowerShellV6.0或更高版本,则可以使用-FilterHashTable
。我会使用类似这样的东西来检查这些事件。我的服务器并不都有v6,所以我必须远程运行它,如下所示:
#Requires -Version 6.0
$alerts = Get-WinEvent -ComputerName $computername -FilterHashtable @{
StartTime = ((Get-Date).AddDays(-1)).Date
LogName = 'Security'
ProviderName = 'Microsoft-Windows-Security-Auditing'
ID = 4732
TargetDomainName='Builtin' ## These fields require
TargetUserName='Administrators' ## Powershell v6.0+
}
我将介绍如何将事件日志的本地SID转换为用于报告的用户名,因为这很麻烦
# Process event(s)
if ($alerts) { foreach ($event in $alerts) {
# Try and convert SID to account name:
$sid = $event.Properties[1].Value.Value
$localuser = ([System.Security.Principal.SecurityIdentifier]::new($sid)
).Translate([System.Security.Principal.NTAccount])).Value
}
# Use SID in case of failure
if (!$localuser){$localuser=$event.Properties[1].Value}
# Example action
Write-Warning "User $localuser added to local Administrators group on $computername by user $($event.Properties[7].Value)\$($event.Properties[6].Value)"
}}
# Outputs
WARNING: User Server01\local-user01 added to local Administrators group on Server01 by user DOMAIN\AdminUser01
https://stackoverflow.com/questions/66973051
复制相似问题