我正在尝试解析Windows事件日志,以列出已在设备上卸载的所有软件以及由谁登录。
这是我到现在想出的:
PowerShell -ExecutionPolicy ByPass -Command "Get-WinEvent -FilterHashTable @{logname=’application’; id=1040; StartTime=(get-date).AddDays(-1)} | select timecreated, level, id, message, ProviderName, User | Export-Csv -Append C:\BCM\eventerr.csv -notype"
Get-WinEvent -MaxEvents 10 | foreach {
$sid = $_.userid;
if($sid -eq $null) { return; }
$objSID = New-Object System.Security.Principal.SecurityIdentifier($sid);
$objUser = $objSID.Translate([System.Security.Principal.NTAccount]);
Write-Host $objUser.Value;
}
但它首先输出错误:
错误:尝试执行未经授权的操作..在行:1 char:1 + Get-WinEvent -MaxEvents 10 | foreach {+ ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified :( :) [Get-WinEvent],Exception + FullyQualifiedErrorId: LogInfoUnavailable,Microsoft.PowerShell.Commands.GetWinEvent命令
然后它输出一个包含2个用户的列表......
编辑:以下没用,因为我意识到第二个命令行没有(总是?)输出正确的结果......
我尝试将这些结合起来:
PowerShell -ExecutionPolicy ByPass -Command "Get-WinEvent -MaxEvents 10 -FilterHashTable @{logname=’application’; id=1040; StartTime=(get-date).AddDays(-1)} | select timecreated, level, id, message, ProviderName, User | foreach {$sid = $_.userid; if($sid -eq $null) { return; } $objSID = New-Object System.Security.Principal.SecurityIdentifier($sid); $objUser = $objSID.Translate([System.Security.Principal.NTAccount]); Write-Host $objUser.Value;}| Export-Csv -Append C:\BCM\eventerr.csv -notype"
但是我在powershell窗口中收到了这个错误:
在第1行:char:325 + ... rityIdentifier(); AD \ user = S-1-5-21-935981524-3360503449-101602611-2988 ... +〜'''之后预计会出现一个表达式。 + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:ExpectedExpression
有人可以帮我解决这个问题吗?
提前致谢:)
答案 0 :(得分:1)
这里结合了两个功能:
for (int i = 1; i < password.length() -1; i++)
{
char l = password.charAt(i);
if (password.length() < 8 && !Character.isLetter(l) || !Character.isDigit(l))
{
return false;
}
}
return true;
在这里它是一个非常长的oneliner:
Get-WinEvent -FilterHashTable @{logname='application'; id=1040; StartTime=(get-date).AddDays(-10)} | ? {$_.userid} | % {
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($_.userid)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
[pscustomobject]@{
User = $objUser.Value
timecreated = $_.timecreated
level = $_.level
id = $_.id
message = $_.message
ProviderName = $_.ProviderName
}
} | Export-Csv -Append C:\BCM\eventerr.csv -notype
编辑:添加了PowerShell -ExecutionPolicy ByPass -Command "Get-WinEvent -FilterHashTable @{logname='application'; id=1040; StartTime=(get-date).AddDays(-10)} | ? {$_.userid} | % {$objSID = New-Object System.Security.Principal.SecurityIdentifier ($_.userid); $objUser = $objSID.Translate( [System.Security.Principal.NTAccount]);[pscustomobject]@{User = $objUser.Value;timecreated = $_.timecreated;level = $_.level;id = $_.id;message = $_.message;ProviderName = $_.ProviderName}} | Export-Csv -Append C:\BCM\eventerr.csv -notype"
过滤器,用于删除日志中没有用户ID解析Where-Object
错误消息的条目。