正如您可能从标题中了解到的,我是PowerShell的新手,甚至很难描述我的问题。所以请原谅我的术语。PowerShell:ConvertFrom-Json将多个对象导出到csv
方案
我使用PowerShell来查询办公室365 Search-UnifiedAuditLog
返回“多组对象的”(?),其中一个具有其他对象数组的cmdlet的审计日志(?) 。如果我有这个权利,输出是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
现在,我想要一些导出到CSV中的AuditData
线的内容(通常包含比这里复制的更多的数据)。这适用于一组“对象”(如上所述)。要做到这一点我使用:
$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
[email protected], loggedIn, 10.10.10.10
[email protected], accessedFile, 11.11.11.11
教师的答案将非常,非常感激。非常感谢!
而不是'-ResultSize'忽略对象的其余部分,请尝试使用'搜索 - UnifiedAuditLog | Select-Object -ExpandProperty AuditData | ConvertFrom-Json' –
Eris
@Eris你是**天才!**这正是我所需要的。现在有一个csv文件,包含所有审核的事件,包括所有的细节都包含在AuditData对象中。试图将您的评论标记为答案,但意识到我无法做到这一点。 – pontus