【发布时间】:2018-08-06 17:56:29
【问题描述】:
我有一个程序通过 PowerShell 运行 WMI 查询并获取输出并将其存储在字符串中,然后打印出来。当我运行它时,我得到这个文本块。我可以找出我想要的值(名称、传感器类型和值)。但是里面还有很多其他的垃圾。
b'\r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\ r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : Memory\r\nSensorType : Load\r\nValue : 40.99033\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\ n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Core #2\r\nSensorType : Temperature\r\nValue : 62\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r \n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : 已用空间\r\n SensorType : Load\r\nValue : 92.39651\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Core #1\r\nSensorType : Temperature\r\nValue : 62\r\nPSComputerName : \ r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r \n__NAMESPACE : \r\n__PATH : \r\nName : CPU DRAM\r\nSensorType : Power\r\nValue : 1.471058\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r \n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NA MESPACE : \r\n__PATH : \r\nName : CPU Core #2\r\nSensorType : Load\r\nValue : 55.46875\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\ r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Package\ r\nSensorType : Power\r\nValue : 12.19472\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\ n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : Bus Speed\r\nSensorType : Clock\r\nValue : 100.0001\r\nPSComputerName : \ r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\ n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Total\r\nSensorType : Load\r\nValue : 51.5625\r\nPSComputerName : \ r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r \n__NAMESPACE : \r\n__PATH : \r\nName : CPU 包\r\nSensorType : Temperature\r\nValue : 62\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r \n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Core #2 \r\nSensorType : Clock\r\nValue : 3100.004\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Se nsor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : 温度\r\nSensorType : Temperature\r\nValue : 34\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r \n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : Used Memory\r\nSensorType : Data\r\nValue : 3.240162\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \ r\n__NAMESPACE : \r\n__PATH : \r\nName : 可用内存\r\nSensorType : Data\r\nValue : 4 .664536\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : { }\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Core #1\r\nSensorType : Clock\r\nValue : 3100.004\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : 传感器\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Cores\r\nSensorType : Power\r\nValue : 7.794704\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\n名称: CPU 显卡\r\nSensorType : 电源\r\n值 : 2.226472\r\nPSComputerName : \r\n\r\n__GENUS : 2\r\n__CLASS : Sensor\r\n__SUPERCLASS : \r\n__DYNASTY : \r\n__RELPATH : \r\n__PROPERTY_COUNT : 3\r\n__DERIVATION : {}\r\n__SERVER : \r\n__NAMESPACE : \r\n__PATH : \r\nName : CPU Core #1\r\nSensorType : Load\r\nValue : 47.65625 \r\nPSComputerName : \r\n\r\n\r\n\r\n'
这是 PowerShell 脚本,
function NSV(){
$computer = "LocalHost"
$namespace = "root\OpenHardwareMonitor"
$property1 = "Name"
$property2 = "SensorType"
$property3 = "Value"
Get-WmiObject -class Sensor -computername $computer -namespace $namespace -Property $property1,$property2,$property3
}
这里是 Python 脚本,
import subprocess
p = subprocess.Popen(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", ". \"./TestScript\";", "&NSV"], stdout=subprocess.PIPE)
(output, err) = p.communicate()
print (output)
我对这些东西很陌生,所以任何帮助都将不胜感激! :)
【问题讨论】:
-
为什么不
ConvertTo-JsonPowerShell 中的输出? -
我不熟悉那个命令。我会在哪里实现我的 .ps1 上的那条线
-
简单追加到
Get-WmiObject .... | ConverTo-Json的末尾 -
看起来很简单,我会试试的。谢谢
标签: python python-3.x powershell subprocess wmi-query