Finding out what determines which properties are displayed


MoW, a Monad newsgroup regular, asked why only the Caption, Name and PeakUsage properties were displayed from the command “get-WMIObject Win32_PageFileUsage” while the output object had a lot more properties. I think it is worth it to explain in details how to find out which properties are displayed.
First, I would look at which view defined in one of the *.format.msh1xml files is used. The Trace-Command Cmdlet can help here:
Trace-Command –option All –Name FormatViewBinding { get-WMIObject Win32_PageFileUsage | out-host} –MshHost


The trace output is in yellow. It reads at the end: “DEBUG: FormatViewBindin Information: 0 : No applicable view has been found.” Now, I know that no view is used. The next place to look is the types.msh1xml file. In this file, each type description can have a node called DefaultDisplayPropertySet where the default display properties are defined. Since the class in question is Win32_PageFileUsage, we can search for the string in notepad. Here is the section for the class.


    <Type>
        <Name>System.Management.ManagementObject#root\cimv2\Win32_PageFileUsage</Name>
        <Members>
            <PropertySet>
                <Name>MshStatus</Name>
                <ReferencedProperties>
                    <Name>Status</Name>
                    <Name>Name</Name>
                    <Name>CurrentUsage</Name>
                </ReferencedProperties>
            </PropertySet>
            <MemberSet>
                <Name>MshStandardMembers</Name>
                <Members>
                    <PropertySet>
                        <Name>DefaultDisplayPropertySet</Name>
                        <ReferencedProperties>
                            <Name>Caption</Name>
                            <Name>Name</Name>
                            <Name>PeakUsage</Name>
                        </ReferencedProperties>
                    </PropertySet>
                </Members>
            </MemberSet>
        </Members>
    </Type>


Under the DefaultDisplayPropertySet node, there are Caption, Name, and PeakUsage. The question is answered.


– Kevin[MSFT]


Comments (4)

  1. //o// says:

    as I wanted a list of defined defaults, I came to this one-liner :

    ([xml](gc $MSHHOMEtypes.mshxml)).types.type | foreach {"`n$($_.name.split(‘#’)[1])`n";$_.members.memberset.members.PropertySet.ReferencedProperties | foreach {$_.name}}

    it will display the wmi classes where defaults are defined, and wich properties are selected.

    there is a bit of garbage at the begin and end of the file I think it’s a handy list.

    Greetings //o//

  2. applepwc says:

    why not the win32_processor?

    He had a DefaultDisplayPropertySet.But not show only about it.

    —————-

    study mow:

    ([xml](gc $MSHHOMEtypes.mshxml)).types.type | where-object {$_.name.startswith("System.Management.ManagementObjec") } | select-object @{expression = {$_.name.split(‘#’)[1].split(”)[2]};name="name"}, @{e={$_.members.memberset.members.propertyset.referencedproperties | foreach { $_.name}};name="properties"}

  3. Mark says:

    trace-expression?

  4. MSDNArchive says:

    In out most recent build, trace-expression is renamed to trace-command.

    -Kevin[MSFT]