Freigeben über


SELECT * not working for IIS WMI providers

recently I was working on one issue where a simple WMI query was not returning all the proper results. It was a simple query as "SELECT * FROM IISWebVirtualDirSetting"

even tried using adsutil like this directly to get the results, still same results. We checked that the WMI functionality was itself working fine. So what was the issue ?

It turned out that  IIS WMI provider cannot handle custom IIS metabase setting like following entry:

<IIsConfigObject     Location ="/LM/W3SVC/1/ROOT/MyCustom-web"
                >
                <Custom
                                Name="AccessFlags"
                                ID="6016"
                                Value="AccessExecute | AccessRead"
                                Type="DWORD"
                                UserType="IIS_MD_UT_FILE"
                                Attributes="INHERIT"
                />
                <Custom
                                Name="AppFriendlyName"
                                ID="2102"
                                Value="eas-web"
                                Type="STRING"
                                UserType="IIS_MD_UT_FILE"
                                Attributes="INHERIT"
                />

 

The Workaround

1. Cerate a new virtual directory called "MyCustom-web-backup" and point the target folder to the same windows folder path.

2. iisreset -stop

3. look out for  " <IIsWebVirtualDir Location ="/LM/W3SVC/1/ROOT/ MyCustom-web-backup"   , and merge MyCustom-web elements into MyCustom-web-backup elements.

4. iisreset -start

5. Delete the old entries after renaming back the new entry from MyCustom-web-backup to MyCustom-web

 

speical thanks to Hui Zhu for finding this.