GCPSlanops
asked on
Trouble running wmi query from .NET
Good day,
Has anyone out there ever tried to run a remote WMI query for RAID levels of hard drives on IBM servers?
We run a hardware RAID on our servers using LSI controllers. These controllers report to the IBM director agent running on the servers. IBM director installs a set of CIM tools to query information about the hardware. I found the IBM manual that details the classes available here : http://publib.boulder.ibm.com/infocenter/dirinfo/toolkit/index.jsp?topic=/com.ibm.director.sdk.t1.doc/director_environment.html
I am using a standard .NET managementObjectSerarcher to query the server. I have been able to successfully query the standard objects under the CIMV2 namespace but I haven't been able to crack the code so to speak on this namespace. I'm sure I am missing something. The code I am using is below. The class and namespace I am trying to query is in the code. I get an error saying 'Invalid Class'. Any Ideas?
Hopefully this is understandable!
Has anyone out there ever tried to run a remote WMI query for RAID levels of hard drives on IBM servers?
We run a hardware RAID on our servers using LSI controllers. These controllers report to the IBM director agent running on the servers. IBM director installs a set of CIM tools to query information about the hardware. I found the IBM manual that details the classes available here : http://publib.boulder.ibm.com/infocenter/dirinfo/toolkit/index.jsp?topic=/com.ibm.director.sdk.t1.doc/director_environment.html
I am using a standard .NET managementObjectSerarcher to query the server. I have been able to successfully query the standard objects under the CIMV2 namespace but I haven't been able to crack the code so to speak on this namespace. I'm sure I am missing something. The code I am using is below. The class and namespace I am trying to query is in the code. I get an error saying 'Invalid Class'. Any Ideas?
Hopefully this is understandable!
Public Shared Function getDrives(ByVal sName As String) As DataTable
Dim options As New ConnectionOptions
options.Impersonation = ImpersonationLevel.Impersonate
options.Authentication = AuthenticationLevel.Packet
Dim mScope As New ManagementScope("\\" & sName & "\root\PG_Internal", options)
' The documentation notes that this namespace is installed with IBM director also
'Dim mScope As New ManagementScope("\\" & sName & "\root\PG_InterOp", options)
' And this one
'Dim mScope As New ManagementScope("\\" & sName & "\root\IBMSD", options)
' This is the class that the documentation contains the information I want
Dim mQuery As New SelectQuery("SELECT * FROM IBMPSG_RAIDDiskDrive")
Dim mSearcher As New ManagementObjectSearcher(mScope, mQuery)
' build the datatable
Dim mPropertiesTable As New DataTable
Dim mPropertiesRow As DataRow
Dim dcDriveLetter As New DataColumn("Letter", GetType(String)) mPropertiesTable.Columns.Add(dcDriveLetter)
Try
mScope.Connect()
' Check the connection
If mScope.IsConnected Then
' traverse through each record given
For Each driveObj As ManagementObject In mSearcher.Get()
' Create a new row for the datatable
mPropertiesRow = mPropertiesTable.NewRow
' Traverse through the properties found...
For Each driveProperty In driveObj.Properties
' Create the header row
If mPropertiesTable.Columns.Count <> driveObj.Properties.Count + 1 Then
Dim dcDriveProperty As New DataColumn(driveProperty.Name, GetType(String))
mPropertiesTable.Columns.Add(dcDriveProperty)
End If
' Get the property value
mPropertiesRow(driveProperty.Name) = driveProperty.Value
Next
' Add the row
mPropertiesTable.Rows.Add(mPropertiesRow)
Next
End If
' Return the datatable
Return mPropertiesTable
Catch ex As Exception
' Return a datatable showing the exception
mPropertiesRow = mPropertiesTable.NewRow()
mPropertiesRow("Letter") = ex.Message.ToString & "[" & System.Security.Principal.WindowsIdentity.GetCurrent().Name & "]"
mPropertiesTable.Rows.Add(mPropertiesRow)
Return mPropertiesTable
End Try
End Function
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Can you post the whole exception please including line number?
Also you could change your first "Dim mScope" line to the below to help split out sections of the code to find the bug.
Open in new window