I've looked through the WMI code, SQL tables, AD...and I can't come up with a definitive way of getting all the servers within a pool.
Here is what I have so far, for querying WMI:
Components |
WMI Class |
Relation To Pool |
Property Name |
Availability |
Front End Servers |
MSFT_SIPPoolSetting |
PoolFQDN |
PoolMemberList[] - Array of front end servers |
Global AD |
Edge Servers |
MSFT_SIPEdgeProxySetting |
None |
EdgeProxyFQDN |
Global AD |
Archiving and CDR Server |
MSFT_SIPArchivingServerSetting |
None |
dNSHostName |
Global AD |
Forwarding Proxy Server |
MSFT_SIPForwardingProxySetting |
None |
FQDN |
Global AD |
Mediation Server: |
MSFT_SIPMediationServerSetting |
None |
FQDN |
Global AD |
Back-end DB Servers |
MSFT_SIPPoolConfigSetting/MSFT_SIPPoolSetting(use this) |
PoolFQDN |
BackEndDBPath |
Pool (SQL) |
Web Access Server |
MSFT_CWAServerSetting (not in AD--local to machine) |
None |
Name |
Machine |
Web conferencing server |
MSFT_SIPWebComponentsServerSetting |
PoolDN |
FQDN |
Global AD |
A/V Conferencing Server |
MSFT_SIPMCUSetting -> filter to get the av mcu |
None |
FQDN WHERE MCUDN starts with "CN=LS AV MCU" |
Global AD |
Users |
MSFT_SIPESUserSetting |
HomeServerDN |
DisplayName / InstanceID / UserDN / Etc |
Global AD |
Federated Users |
SQL? Users.UserURI not in WMI.UserSetting.PrimaryURI |
N/A |
N/A |
SQL |
Federated Servers |
MSFT_SIPFederationPartnerTable(not in AD--local to machine) |
EdgeProxyAddress |
Domain |
Machine |
My problem is that I can't relate a lot of the items back to a pool. Another problem: I don't know how to find the web access server. I see the class in WMI, but it's only available ON the actual server...I don't know how to get the servername itself.
Has anyone written a 'discovery' type utility for OCS 2007? If so, what did you use to actually get the data?
FWIW: I'll be coding this in either C++ or C#.
Any help would be greatly appreciated.
J