Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dienste & Prozesse auslesen

Forumthread: Dienste & Prozesse auslesen

Dienste & Prozesse auslesen
22.03.2006 13:33:42
klamsi
Hi!
In meiner Firma läuft auf den Clients eine Software.
Diese hinterlässt einen Prozess bzw. auch einen Dienst unter Services.msc
Ich möchte ein Tool programmieren welches auf den Clients im Netzwerk diesen Dienst oder Prozess (eines von beiden reicht) ausließt.
Weiß wer wie ich mit VBA einen Dienst oder Prozess auslesen kann? Möglichst noch auf einem Remoteclient?
Ich hab im Netz was gefunden:
services = ServiceController.GetServices(\\Computername)
aber das funzt nicht.
Hat einer von euch eine Idee wie man das machen kann?
Lg,
Klamsi
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dienste & Prozesse auslesen
22.03.2006 16:14:05
Fred
Hi,
das geht am einfachsten mit WMI, mal googeln.
mfg Fred
AW: Dienste & Prozesse auslesen
22.03.2006 19:13:54
Nepumuk
Hallo Klamsi,
mal eine Einfachversion die alles auflistet:
Public Sub prcListService(Optional ByVal strComputername As String = ".")
    Dim objWMI As Object, objItem As Object, objProperty As Object
    Dim lngRow As Long
    Set objWMI = GetObject("winmgmts:\\" & strComputername & "\root\cimv2"). _
        ExecQuery("Select * from Win32_Service")
    For Each objItem In objWMI
        For Each objProperty In objItem.properties_
                lngRow = lngRow + 1
            Cells(lngRow, 1).Value = objProperty.Name
            Cells(lngRow, 2).Value = objProperty.Value
        Next
        lngRow = lngRow + 1
    Next
    Set objWMI = Nothing
End Sub

Public Sub prcListProcess(Optional ByVal strComputername As String = ".")
    Dim objWMI As Object, objItem As Object, objProperty As Object
    Dim lngRow As Long
    Set objWMI = GetObject("winmgmts:\\" & strComputername & "\root\cimv2"). _
        ExecQuery("Select * from Win32_Process")
    For Each objItem In objWMI
        For Each objProperty In objItem.properties_
                lngRow = lngRow + 1
            Cells(lngRow, 1).Value = objProperty.Name
            Cells(lngRow, 2).Value = objProperty.Value
        Next
        lngRow = lngRow + 1
    Next
    Set objWMI = Nothing
End Sub

Gruß
Nepumuk

Anzeige
;
Anzeige

Infobox / Tutorial

Dienste und Prozesse mit VBA auslesen


Schritt-für-Schritt-Anleitung

Um einen Dienst oder Prozess mit VBA auszulesen, kannst du die Windows Management Instrumentation (WMI) nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Neues Modul einfügen: Klicke auf Einfügen > Modul.
  3. Code einfügen: Kopiere den folgenden Code in das Modul:
Public Sub prcListService(Optional ByVal strComputername As String = ".")
    Dim objWMI As Object, objItem As Object, objProperty As Object
    Dim lngRow As Long
    Set objWMI = GetObject("winmgmts:\\" & strComputername & "\root\cimv2"). _
        ExecQuery("Select * from Win32_Service")
    For Each objItem In objWMI
        For Each objProperty In objItem.properties_
            lngRow = lngRow + 1
            Cells(lngRow, 1).Value = objProperty.Name
            Cells(lngRow, 2).Value = objProperty.Value
        Next
        lngRow = lngRow + 1
    Next
    Set objWMI = Nothing
End Sub
  1. Makro ausführen: Drücke F5, um das Makro auszuführen. Es listet alle Dienste auf dem aktuellen Computer auf.

Häufige Fehler und Lösungen

  • Fehler: Zugriff verweigert
    Lösung: Stelle sicher, dass du die nötigen Berechtigungen hast, um auf die WMI-Dienste zuzugreifen. Versuche, das Makro als Administrator auszuführen.

  • Fehler: WMI-Objekt nicht gefunden
    Lösung: Überprüfe, ob der Computername korrekt ist und ob WMI auf dem Zielcomputer aktiviert ist.


Alternative Methoden

Falls die WMI-Methode nicht funktioniert, kannst du auch Tools wie PowerShell verwenden. Hier ist ein Beispiel, um Dienste auf einem Remote-Computer auszulesen:

Get-Service -ComputerName "RemoteComputerName"

Diese Methode ist besonders nützlich, wenn du komplexere Abfragen durchführen möchtest oder wenn du nicht mit VBA arbeiten möchtest.


Praktische Beispiele

Hier sind zwei praktische Beispiele, die dir helfen können, die VBA-Funktion zu erweitern:

  1. Dienste filtern: Wenn du nur bestimmte Dienste auflisten möchtest, kannst du den SQL-Befehl in der ExecQuery-Methode anpassen:
ExecQuery("Select * from Win32_Service where State = 'Running'")
  1. Prozesse auslesen: Um Prozesse anstatt Dienste auszulesen, kannst du den folgenden Code verwenden:
Public Sub prcListProcess(Optional ByVal strComputername As String = ".")
    Dim objWMI As Object, objItem As Object, objProperty As Object
    Dim lngRow As Long
    Set objWMI = GetObject("winmgmts:\\" & strComputername & "\root\cimv2"). _
        ExecQuery("Select * from Win32_Process")
    For Each objItem In objWMI
        For Each objProperty In objItem.properties_
            lngRow = lngRow + 1
            Cells(lngRow, 1).Value = objProperty.Name
            Cells(lngRow, 2).Value = objProperty.Value
        Next
        lngRow = lngRow + 1
    Next
    Set objWMI = Nothing
End Sub

Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen Makros, um Ausnahmen elegant zu handhaben. Nutze On Error Resume Next für die Fehlerbehandlung.

  • Leistungsoptimierung: Wenn du viele Daten verarbeiten musst, deaktiviere die Bildschirmaktualisierung mit Application.ScreenUpdating = False und aktiviere sie wieder am Ende deines Codes.

  • Code kommentieren: Kommentiere deinen Code, um ihn für andere (oder dich selbst in der Zukunft) verständlicher zu machen.


FAQ: Häufige Fragen

1. Frage
Wie kann ich das Skript so anpassen, dass es nur bestimmte Dienste anzeigt?
Antwort: Du kannst die SQL-Abfrage in der ExecQuery-Methode anpassen, um nur die gewünschten Dienste anzuzeigen.

2. Frage
Kann ich die Informationen auch in eine andere Datei exportieren?
Antwort: Ja, du kannst den Code erweitern, um die Daten in eine CSV-Datei zu exportieren oder direkt in ein anderes Excel-Blatt zu schreiben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige