Abfrage eines Remotesystem um die Anzahl der physikalischen Prozessoren zu ermitteln.
'Zuerst eine Klasse die den nötigen Code aufnimmt
Imports System.Management
Public Class clsRemoteCPUCount
Public Function CountPhysCPURemote(ByVal strUser As String, _
ByVal strDomain As String, _
ByVal strComputer As String, _
ByVal strPassword As String) As Integer
Try
Dim PhysCPU As ArrayList = New ArrayList
Dim options As ConnectionOptions
options = New ConnectionOptions()
options.Username = strDomain & "\" & strUser
options.Password = strPassword
'options.Authority = "kerberos:" & strDomain
Dim scope As ManagementScope
scope = New ManagementScope( _
"\\" & strComputer & "\root\cimv2", options)
Try
scope.Connect()
Catch ex As Exception
'Hinweis wenn die Verbindung fehlschlaegt
MessageBox.Show(ex.Message, "Error while Connecting", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
'Abfrage und ermitteln der gewünschten Information
Dim query As ObjectQuery
query = New ObjectQuery( _
"SELECT * FROM Win32_Processor")
Dim searcher As ManagementObjectSearcher
searcher = New ManagementObjectSearcher(scope, query)
Dim queryCollection As ManagementObjectCollection
queryCollection = searcher.Get()
Dim m As ManagementObject
For Each m In queryCollection
Dim SocketDesignation As String = m.Properties("SocketDesignation").Value.ToString()
If Not PhysCPU.Contains(SocketDesignation) Then
PhysCPU.Add(SocketDesignation)
End If
Next
Return PhysCPU.Count
Catch ex As Exception
End Try
End Function
End Class
'Aufruf der Klasse und Übergabe der Parameter
Dim cls As New clsRemoteCPUCount
MsgBox(cls.CountPhysCPURemote("user", "Domain", "Remotesystem", "Password").ToString)
'Wird kein Active Directory verwendet, muss bei Domäne der Name des Remotesystems angegeben werden.
Durch Übergabe von Name und Password ist der Snippet auch gem. dem neuen §202 Gesetzeskonform. Durch leichte Modifikation könnte auch auf Übergabe von Username und Password verzichtet werden.
Kommentare zum Snippet