Reputation: 1076
In Win32_DiskDrive. There's a Capabilities Property which has a type of System.UInt16[].
Am trying to get the values by using GetProperty and convert it to string. But it keeps throwing an error (I don't want to trap it) on Capabilities property.
The error was: InvalidCastException
Message: Object must implement IConvertible.
Upvotes: 0
Views: 2543
Reputation: 97847
There's the WMI Code Creator tool from Microsoft that can generate C#, Visual Basic .NET and VBScript code for you to run any WMI query and enumerate the results. It's also very useful for exploring WMI namespaces and classes, so it's a must-have when dealing with WMI.
Now back to the question. From the System.UInt16[]
syntax I assume that you're using C#. Here's sample C# code (generated by WMI Code Creator, with a few minor changes) that demonstrates how you can access individual elements of the Capabilities
array:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject queryObj in searcher.Get())
{
if(queryObj["Capabilities"] == null)
Console.WriteLine("Capabilities: {0}", queryObj["Capabilities"]);
else
{
UInt16[] arrCapabilities = (UInt16[])(queryObj["Capabilities"]);
foreach (UInt16 arrValue in arrCapabilities)
{
Console.WriteLine("Capabilities: {0}", arrValue);
}
}
Console.WriteLine();
}
To convert a UInt16
value to a string, you can use the ToString
method, for example:
foreach (UInt16 arrValue in arrCapabilities)
{
Console.WriteLine(arrValue.ToString());
}
Upvotes: 1