.NET Framework Class Library
PropertyDataCollection Class
Represents the set of properties of a WMI object.
Assembly: System.Management (in System.Management.dll)
Syntax
Visual Basic (Declaration)
Public Class PropertyDataCollection _ Implements ICollection, IEnumerable
Visual Basic (Usage)
Dim instance As PropertyDataCollection
C#
public class PropertyDataCollection : ICollection, IEnumerable
Visual C++
public ref class PropertyDataCollection : ICollection, IEnumerable
JScript
public class PropertyDataCollection implements ICollection, IEnumerable
Examples
The following example lists information about the Win32_OperatingSystem class using the PropertyData class. For more information about Win32_OperatingSystem, see the Windows Management Instrumentation documentation in the MSDN Library at http://msdn.microsoft.com/library.
Visual Basic
Imports System Imports System.Management Public Class Sample Public Overloads Shared Function _ Main(ByVal args() As String) As Integer ' Get the WMI class Dim osClass As ManagementClass = _ New ManagementClass("Win32_OperatingSystem") osClass.Options.UseAmendedQualifiers = True ' Get the Properties in the class Dim properties As PropertyDataCollection = _ osClass.Properties ' display the Property names Console.WriteLine("Property Name: ") For Each p As PropertyData In properties Console.WriteLine( _ "---------------------------------------") Console.WriteLine(p.Name) Console.WriteLine("Description: " & _ p.Qualifiers("Description").Value) Console.WriteLine() Console.WriteLine("Type: ") Console.WriteLine(p.Type) Console.WriteLine() Console.WriteLine("Qualifiers: ") For Each q As QualifierData In _ p.Qualifiers Console.WriteLine(q.Name) Next Console.WriteLine() For Each c As ManagementObject In osClass.GetInstances() Console.WriteLine("Value: ") Console.WriteLine( _ c.Properties(p.Name.ToString()).Value) Console.WriteLine() Next Next End Function End Class
C#
using System; using System.Management; public class Sample { public static void Main() { // Get the WMI class ManagementClass osClass = new ManagementClass("Win32_OperatingSystem"); osClass.Options.UseAmendedQualifiers = true; // Get the Properties in the class PropertyDataCollection properties = osClass.Properties; // display the Property names Console.WriteLine("Property Name: "); foreach (PropertyData property in properties) { Console.WriteLine( "---------------------------------------"); Console.WriteLine(property.Name); Console.WriteLine("Description: " + property.Qualifiers["Description"].Value); Console.WriteLine(); Console.WriteLine("Type: "); Console.WriteLine(property.Type); Console.WriteLine(); Console.WriteLine("Qualifiers: "); foreach(QualifierData q in property.Qualifiers) { Console.WriteLine(q.Name); } Console.WriteLine(); foreach (ManagementObject c in osClass.GetInstances()) { Console.WriteLine("Value: "); Console.WriteLine( c.Properties[property.Name.ToString()].Value); Console.WriteLine(); } } } }
Inheritance Hierarchy
System.Object
System.Management.PropertyDataCollection
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.Platforms
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information
.NET Framework
Supported in: 3.5, 3.0, 2.0, 1.1, 1.0See Also
Reference
Community Content
Thomas Lee
Notes on the sample above
Some notes on the PowerShell sample above (and the C# one too for that matter!)
- The script uses the WMI class Win32_OperatingSystem. This class only returns one instance (i.e. details of the OS running on this virtual/physical hardware, of which there can only be one). This means when the values are returned, you only see one value (e.g. the build number, 2600, in the sample script output - the computer this script was run is using Windows XP). For more information on this class, see http://msdn.microsoft.com/en-us/library/aa394239.aspx.
- If you change the class to one which has multiple instances, eg, Win32_Share, you would see the values for each occurrence. For more information on that class, see http://msdn.microsoft.com/en-us/library/aa394435.aspx.
- This script is useful and is intended for use in learning more about the classes, and how WMI works (i.e. what is a PropertyDataCollection!).
- For direct management use using PowerShell, you are probably better off just using something like "$os=GWMI Win32_OperatingSystem" then using $os variable directly (e.g. $os | fl *, etc).
- The property information thaat the script outputs is obtained from WMI's CIM repository. The information is supplied via MOF (Managed Object Files) typically installed when your OS is. The details in the CMI however, are not fully consistent with the reference material in the online MSDN reference. The variations are very minor so far as I can see in looking at a couple of properties.
Thomas Lee
Link to Win32_OperatingSystem Class missing in article
At the very start of the Examples section in the main article, the article presents a hyperlinked reference to the Win32_OperatingSystem class. The text above that reference, unhelpfully, the article points the reader to the base of the library rather than directly relevant content.
Here's how to improve this article:
Here's how to improve this article:
- In this 1st line of the example section, the text "Win32_OperatingSystem" should be hyperlinked to: http://msdn.microsoft.com/en-us/library/aa394239.aspx, which describes this WMI class.
- Also, the reference to the "MSDN Library at http://msdn.microsoft.com/library" is not helpful either. This reference should be changed to something more useful, e.g.
For more information on WMI classes, see the WMI Class documentation at: http://msdn.microsoft.com/en-us/library/aa394554(VS.85).aspx. For more information on using WMI, see the documentation starting at http://msdn.microsoft.com/en-us/library/aa393964(VS.85).aspx.
Thomas Lee
Retreive WMI Property data using PowerShell
# get-wmiclassproperties.ps1
# Gets WMI Class property list using PowerShell
# This sample is based on the C# code above.
# Also gets property descrption and current value
# Thomas Lee - tfl@psp.co.uk
# First, get the WMI class
$osClass = new-object system.management.ManagementClass Win32_OperatingSystem
$osClass.Options.UseAmendedQualifiers = $true
# Get the Properties in the class
$properties = $osClass.Properties
"This class has {0} properties as follows:" -f $properties.count
# display the Property name, description, type, qualifiers and instance values
"Property Name:"
foreach ($property in $properties) {
"---------------------------------------"
$property.Name
"Description: " + $property.Qualifiers["Description"].Value
""
"Type: "
$property.Type
""
"Qualifiers: "
foreach($q in $property.Qualifiers) {
$q.Name
}
""
foreach ($c in $osClass.GetInstances()) {
"Value: "
$c.Properties[$property.Name.ToString()].Value
""
}
}
This script produces the following output:
PSH [D:\foo]: .\get-wmiclassproperties.ps1
This class has 61 properties as follows:
Property Name:
---------------------------------------
BootDevice
Description: The BootDevice property indicates the name of the disk drive from which
the Win32 operating system boots.
Example: \\Device\Harddisk0.
Type:
String
Qualifiers:
CIMTYPE
Description
MappingStrings
read
Value:
\Device\HarddiskVolume2
---------------------------------------
BuildNumber
Description: The BuildNumber property indicates the build number of the operating sy
stem. It can be used for more precise versioning information than product release v
ersion numbers
Example: 1381
Type:
String
Qualifiers:
CIMTYPE
Description
MappingStrings
read
Value:
2600
Remaining output snipped to save space!