Ich versuche, Windows-Ereignisprotokolle zu analysieren, um jede Software aufzulisten, die auf einem Gerät und von wem deinstalliert wurde. HierWie erhält man den Benutzernamen des Benutzers, der eine Anwendung unter Windows deinstalliert hat?
ist, was ich kam mit bisher:
- Spiel auf Ereignisse 1040 (applciation deinstallieren):
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"
- erhalten die "User" gegeben in das Ereignis:
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;
}
Aber es beginnt mit einem Fehler outputing:
Error: Attempted to perform an unauthorized operation.. At line:1 char:1 + Get-WinEvent -MaxEvents 10 | foreach { + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-WinEvent], Exception + FullyQualifiedErrorId : LogInfoUnavailable,Microsoft.PowerShell.Commands.GetWinEventCommand
Dann gibt es eine Liste von 2 Benutzern ...
EDIT: die folgenden ist nutzlos, da ich da, dass die realisierte zweite Befehlszeile nicht (immer?) ein richtiges Ergebnis ausgeben ...
Ich habe versucht, diese wie folgt zu kombinieren:
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"
Aber ich diesen Fehler in der Powershell-Fenster:
At line:1 char:325 + ... rityIdentifier(); AD\user = S-1-5-21-935981524-3360503449-101602611-2988 ... + ~ An expression was expected after '('. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ExpectedExpression
Kann mir jemand helfen, dass beheben bitte?
Vielen Dank im Voraus :)
Eine Sache falsch ein Semikolon fehlt nach 'if ($ sid -eq $ null) {return; } ', – BenH
Haben Sie Ihren Kommentar sodaillow gelöscht? Ich bin nicht viel an Powershell gewöhnt, warum wäre es einfacher zu debuggen, wenn es in einer Datei war? – druid
Tatsächlich erkannte ich, dass die zweite Befehlszeile nur teilweise funktioniert: Get-WinEvent: konnte Informationen über das Sicherheitsprotokoll nicht abrufen. Fehler: Es wurde versucht, einen nicht autorisierten -Vorgang auszuführen. Bei Zeile: 1 Zeichen: 1 + Get-WinEvent -MaxEvents 10 | foreach { + ~~~~~~~~~~~~~~~~~~~~~ + KategorieInfo: NotSpecified: (:) [Get-WinEvent], Ausnahme + FullyQualifiedErrorId: LogInfoUnavailable, Microsoft.PowerShell.Commands.GetWinEventCommand Dann gibt es eine Liste von 2 Benutzern ... – druid