我正在处理一个 PowerShell 审核日志,它是从 XML 转储中导入的。
每行都是一个 PowerShell 事件,包括各种字段,例如:
Attribute:Cmdlet
(执行的命令的名称)Attribute:Caller
(执行命令的管理员的用户名)CmdletParameters.Parameter
(为命令提供的输入参数)
从屏幕截图中可以看出,CmdletParameters.Parameter
是一个表格列。
这是我要扩展的专栏。
每个 PowerShell 事件可以有无限数量的参数。
(这个数据集中的最大值是单个事件的 17 个参数。)
例如,这是一个带有两个参数的命令:
Set-Mailbox -Identity Username1 -AccountDisabled FALSE
在此示例中,在CmdletParameters.Parameter
表格列中,将有两行:
我想创建两个名为ParameterNames
andParameterValues
在此示例中的自定义列,这些自定义列将包含文本:
编辑:
评论者要求提供原始 XML 数据的示例。
我已经包含了两个事件行,其中私人信息已被编辑。
<?xml version="1.0" encoding="utf-16"?>
<SearchResults>
<Event Caller="AdminUser1" Cmdlet="New-AdminAuditLogSearch" RunDate="2019-04-04T21:49:52+00:00" Succeeded="true" ObjectModified="ObjectUUID1" ExternalAccess="false" OriginatingServer="ServerName1 (IPAddress1)" ClientIP="[IPAddress2]:Port2">
<CmdletParameters>
<Parameter Name="StartDate" Value="4/3/2019 12:00:00 AM" />
<Parameter Name="EndDate" Value="4/4/2019 12:00:00 AM" />
<Parameter Name="ExternalAccess" Value="True" />
<Parameter Name="StatusMailRecipients" Value="AdminUser1" />
<Parameter Name="Name" Value="External admin audit log" />
</CmdletParameters>
</Event>
<Event Caller="AdminUser2" Cmdlet="New-AdminAuditLogSearch" RunDate="2019-04-04T21:33:08+00:00" Succeeded="true" ObjectModified="ObjectUUID2" ExternalAccess="false" OriginatingServer="ServerName2 (IPAddress3)" SessionId="ObjectUUID3" ClientIP="[IPAddress4]:Port4">
<CmdletParameters>
<Parameter Name="StartDate" Value="4/3/2019 12:00:00 AM" />
<Parameter Name="EndDate" Value="4/4/2019 12:00:00 AM" />
<Parameter Name="StatusMailRecipients" Value="AdminUser2" />
</CmdletParameters>
</Event>
</SearchResults>
额外奖励:
正如我上面提到的,这个数据集中每行最多有 17 个参数。
如果我还要创建 17 列ParameterName1..ParameterName17
,我该如何填充这些列?
首先将表格列转换为单个文本列,然后将该文本解析为单独的列是否更容易?