String Powershell事件日志替换字符串-ExpandProperty

String Powershell事件日志替换字符串-ExpandProperty,string,powershell,split,event-log,winlogon,String,Powershell,Split,Event Log,Winlogon,我需要一个所有广告用户的登录数据库。为了将其改造为过去的登录,我在powershell中使用EventLog查询。我的查询工作: Get-EventLog -ComputerName $endpoint System -Source Microsoft-Windows-Winlogon | select machinename,timegenerated,replacementstrings | export-csv c:\test.csv ReplacementStrings返回一个{1,S

我需要一个所有广告用户的登录数据库。为了将其改造为过去的登录,我在powershell中使用EventLog查询。我的查询工作:

Get-EventLog -ComputerName $endpoint System -Source Microsoft-Windows-Winlogon | select machinename,timegenerated,replacementstrings | export-csv c:\test.csv

ReplacementStrings返回一个{1,SID}数组。我将此SID用作另一个表的查找属性。我在网上查了一下,试着在扩大房产方面玩转,但到目前为止运气不好。如您所见,我想将所有这些导出到csv,每个事件作为一个单独的行,包含:machinename、timegenerated,然后是SID,这是我需要的替换字符串。我也考虑过使用.Split[1],但无法使其发挥作用,因为我还在同一查询中请求了另外两个对象。提前谢谢大家-这一个让我很困惑。

我不熟悉该数据的结构,但在我自己的机器上进行一个简单的测试会返回相同的结果。从数据类型来看,它似乎只是一个字符串数组,这就是拆分它不起作用的原因。您可以通过{1,SID}判断它在控制台上的显示方式。相反,我们使用a从replacementstrings中提取第二个值


你就是马特!这正是我想要的。工作完美+1:快速跟进-如果我有多台计算机,我想运行它,并为一组可按机器名或SID排序的端点生成一个主csv,我会将导出csv命令放在foreach循环之外吗?@ChuckD Yes。在循环内收集数据。做所有排序和导出外部循环。@ ChuckD,如果这个答案解决了你的问题,考虑把它标记为问题左边的复选标记。当我试图导出这个循环时,它只输出我查询的两台计算机中的第一个结果:$master_花名册中的foreach$endpoint{$csvexport=Get EventLog-ComputerName$endpoint System-Source Microsoft Windows Winlogon-newst 30 |选择对象machinename,timegenerated,@{Label=SID;Expression={$\替换字符串[1]}}$csvexport |导出Csv e:\test.Csv
Get-EventLog -ComputerName $endpoint System -Source Microsoft-Windows-Winlogon | 
        Select-Object machinename,timegenerated,@{Label="SID";Expression={$_.replacementstrings[1]}} |
        Export-Csv c:\test.csv