我能找到的大多数使用 Powershell 和 C# 的代码示例都涉及使用 PSobject 从 Powershell 脚本返回数据。创建 PSObject 的大量示例涉及从 Get-WMIObject 获取数据并将其转换为 PSObject。这是通过手动指定要从结果中转移到新 PSObject 中的每个属性来完成的。无论如何在Powershell中将结果从Get-WMIObject(我相信是ManagementObject)动态转换为PSObject?
基本上我想要一个函数,无论我使用什么类的 WMIObject,我都能够转换为 PSObject。我遇到了可用于 Get-WMIObject 调用结果的 .PSObject.Members 调用(只是 .PSObject 实际上似乎没有任何有效的东西)。所以我能够做到以下几点:
$class = "Win32_ComputerSystem"
$psObject = New-Object PSObject
$properties = (Get-WMIObject -Class $class).PSObject.Members | where membertype -match "Property"
foreach($property in $properties)
{
$psObject | Add-Member NoteProperty $property.name -Value $property.value
}
$psObject
但这给了我更多的结果,我通常只需要调用 Get-WMIObject。有谁知道更好的转换方法或进一步缩小这些结果以更接近标准输出的方法?我希望它保持通用,我可以将 $class 的值更改为任何其他 WMIObject 类,它仍然可以工作。