[英]Powershell systeminfo as JSON or XML
我正在执行:
systeminfo | ConvertTo-Json
"Host Name: namehere",
"OS Name: Microsoft Windows 10 Enterprise",
...
但是我需要
"Host Name": "namehere",
"OS Name": "Microsoft Windows 10 Enterprise",
...
以下命令给出了类似的问题
systeminfo | ConvertTo-Xml -As String
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.String"></Object>
<Object Type="System.String">Host Name: namehere</Object>
<Object Type="System.String">OS Name: Microsoft Windows 10 Enterprise</Object> "
但我需要这样的东西:
<?xml version="1.0" encoding="utf-8"?>
<HostName>namehere</HostName>
<OSName>Microsoft Windows 10 Enterprise</OSName>
...
尝试这个:
systeminfo /fo CSV | ConvertFrom-Csv
要么
systeminfo /fo CSV | ConvertFrom-Csv | convertto-json
为了补充托马斯·舒马赫的有用答案 :
在PSv5 +中,您也可以使用Get-ComputerInfo
。
尽管所得的[Microsoft.PowerShell.Commands.ComputerInfo]
实例中的字段(属性)名称与systeminfo
输出中的字段名称不同,但是您可能会在此处获得更多信息。
由于Get-ComputerInfo
输出的对象的属性包含该信息,因此您可以将其直接发送到ConvertTo-Json
/ ConvertTo-Xml
Get-ComputerInfo | ConvertTo-Json
至于你尝试了什么 :
诸如systeminfo
外部程序只能输出文本 ,并且通常以(半) 非结构化形式进行输出,这种形式更适合于人类查看,而不是进一步的程序处理。
相比之下,为了从ConvertTo-Json
/ ConvertTo-Xml
获得有意义的输出,您需要结构化的文本格式( systeminfo
恰巧通过其/FO
选项提供)或输入对象 (这是PowerShell的cmdlet输出)。
因此,通常最好是寻找外部程序的PowerShell替代方案。 如果它们都不存在,并且如果外部程序不提供结构化文本输出,则您必须求助于自己的文本分析,以强加结构,这既脆弱又麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.