我正在尝试创建一个Web API,将PowerShell命令的输出转换为JSON。是否有可以完成此操作或将PSObject转换为JSON的库?
PSObject属性根据生成它的命令而变化。我尝试将PSObject传递给"ConvertTo-Json",但是得到了额外的对象信息。
PowerShell命令:
Get-Process | Select -Property Handles,ProcessName | ConvertTo-Json
JsonConvert.SerializeObject()之后的输出结果:
"{\"CliXml\":\"<Objs Version=\\\"1.1.0.1\\\" xmlns=\\\"http://schemas.microsoft.com/powershell/2004/04\\\">\\r\\n <Obj RefId=\\\"0\\\">\\r\\n<TN RefId=\\\"0\\\">\\r\\n <T>System.String</T>\\r\\n <T>System.Object</T>\\r\\n </TN>\\r\\n <ToString>[_x000D__x000A_ {_x000D__x000A_\\\"Handles\\\":163,_x000D__x000A_\\\"ProcessName\\\":\\\"AppleMobileDeviceService\\\"_x000D__x000A_},_x000D__x000A_ {_x000D__x000A_\\\"Handles\\\": 972,_x000D__x000A_\\\"ProcessName\\\":\\\"CcmExec\\\"_x000D__x000A_},_x000D__x000A_{_x000D__x000A_\\\"Handles\\\": 1838,_x000D__x000A_\\\"ProcessName\\\":\\\"ccSvcHst\\\"_x000D__x000A_}"
PowerShell命令用于BeginInvoke。
PowerShell命令:
Get-Process | Select -Property Handles,ProcessName
JsonConvert.SerializeObject(PSObj)的输出结果为:
"[{\"CliXml\":\"<Objs Version=\\\"1.1.0.1\\\" xmlns=\\\"http://schemas.microsoft.com/powershell/2004/04\\\">\\r\\n <Obj RefId=\\\"0\\\">\\r\\n <TN RefId=\\\"0\\\">\\r\\n <T>Selected.System.Diagnostics.Process</T>\\r\\n <T>System.Management.Automation.PSCustomObject</T>\\r\\n <T>System.Object</T>\\r\\n </TN>\\r\\n <ToString>@{Handles=163; ProcessName=AppleMobileDeviceService}</ToString>\\r\\n <Obj RefId=\\\"1\\\">\\r\\n <TNRef RefId=\\\"0\\\" />\\r\\n <MS>\\r\\n <I32 N=\\\"Handles\\\">163</I32>\\r\\n <S N=\\\"ProcessName\\\">AppleMobileDeviceService</S></Objs>\"}}]