2013-06-17 1 views
4

Я пытаюсь найти пользователя, который удалил программу на сервере. Вот сценарий, который я использую, и результат. Из Event Viewer я могу видеть пользователя, но похоже, что Get-WinEvent возвращает UserId, но не Username. Есть ли способ вернуть имя пользователя для события 1034 из Get-WinEvent?Получить имя пользователя из Get-WinEvent

Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1034} -MaxEvents 1 | format-list 

TimeCreated : 6/17/2013 1:41:27 PM 
ProviderName : MsiInstaller 
Id   : 1034 
Message  : Windows Installer removed the product. Product Name: PAL. Product Version: 2.3.2. Product Language: 
      1033. Manufacturer: PAL. Removal success or error status: 0. 

ответ

6

Использование .NET-х SecurityIdentifier, as described here.

Get-WinEvent -MaxEvents 1000 | 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; 
} 

Для ненулевых идентификаторов пользователей я смог успешно идентифицировать имена пользователей.