加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 从Get-WinEvent获取用户名

发布时间:2020-12-14 02:01:22 所属栏目:Windows 来源:网络整理
导读:我试图找到一个在服务器上卸载程序的用户.这是我正在使用的脚本和结果.从事件查看器,我能够看到用户,但看起来像Get-WinEvent返回UserId但没有用户名.有没有办法从Get-WinEvent返回事件1034的用户名? Get-WinEvent -FilterHashtable @{LogName='Application'
我试图找到一个在服务器上卸载程序的用户.这是我正在使用的脚本和结果.从事件查看器,我能够看到用户,但看起来像Get-WinEvent返回UserId但没有用户名.有没有办法从Get-WinEvent返回事件1034的用户名?

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.

解决方法

使用.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;
}

对于非空用户ID,我能够成功识别用户名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读