PowerShell:ConvertFrom-Json 将多个对象导出到 csv
Posted
技术标签:
【中文标题】PowerShell:ConvertFrom-Json 将多个对象导出到 csv【英文标题】:PowerShell: ConvertFrom-Json to export multiple objects to csv 【发布时间】:2017-07-14 08:44:11 【问题描述】:您可能从标题中了解到,我是 PowerShell 新手,甚至很难描述我的问题。所以请原谅我的术语。
场景
我正在使用 PowerShell 查询 Office 365 的审核日志。cmdlet Search-UnifiedAuditLog
返回“多组对象”(?),其中一个对象包含一组其他对象(?)。如果我做对了,输出就是 JSON。
这是一个返回的示例(我将其称为一个“对象集”):
RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
RecordType : AzureActiveDirectoryStsLogon
CreationDate : 21/02/2017 12:05:23
UserIds : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Operations : UserLoggedIn
AuditData : "CreationTime":"2017-02-21T12:05:23","Id":""ID":"00000000000000000","Type":3],"ActorContextId":"xxxxxxxxxxxxxxxxxxxxxxxxx","ActorIpAddress":"xxxxxxxxxxxxx","InterSystemsId":"xxxxxxxxxxxxxxxxx","IntraSystemId":"000000000000-000000-000","Target":["ID":"00-0000-0000-c000-000000000000","Type":0],"TargetContextId":"xxxxxxxxxxxxxxxxxx","ApplicationId":"xxxxxxxxxxxxxxxxxxxxxxxxxx"
ResultIndex : 1
ResultCount : 16
Identity : xxxxxxxxxxxxxxxxxxxxxxxxxxx
IsValid : True
ObjectState : Unchanged
现在,我想要将AuditData
行的一些内容导出到 csv(通常包含比此处复制的数据多得多的数据)。这适用于一组“对象”(如上面的对象)。为此,我使用:
$LogOutput = Search-UnifiedAuditLog -StartDate 2/20/2017 -EndDate 2/23/2017 -ResultSize 1
$ConvertedOutput = ConvertFrom-Json -InputObject $LogOutput.AuditData
$ConvertedOutput | Select-Object CreationTime,UserId,ClientIP | Export-Csv -Path "C:\users\some.user\desktop\users.csv
ResultSize
返回 1 而不是多个“对象集”。如果我删除 ResultSize
,ConvertFrom-Json
将不起作用。
所以问题是:
我可以遍历所有“对象集”并从 json 转换并在 csv 上逐行导出吗?结果是这样的:
UserId,Activity,UserIP
this@user.com, loggedIn, 10.10.10.10
that@user.org, accessedFile, 11.11.11.11
非常非常感谢一个教学答案。非常感谢!
【问题讨论】:
用-ResultSize
代替Search-UnifiedAuditLog <args> | Select-Object -ExpandProperty AuditData | ConvertFrom-Json
@Eris 你是一个天才!这正是我所需要的。现在有一个 csv 文件,其中包含所有审核的事件,包括烘焙到 AuditData 对象中的所有详细信息。试图将您的评论标记为答案,但意识到我不能这样做。
【参考方案1】:
请尝试使用Search-UnifiedAuditLog <args> | Select-Object -ExpandProperty AuditData | ConvertFrom-Json
,而不是-ResultSize
这将仅将AuditData
属性转发到ConvertFrom-Json
并忽略来自Search-UnifiedAuditLog
的其余对象
【讨论】:
以上是关于PowerShell:ConvertFrom-Json 将多个对象导出到 csv的主要内容,如果未能解决你的问题,请参考以下文章
powershell PowerShell:启动PowerShell作为其他用户提升
powershell [提示输入powershell] #powershell #input #prompt