2017-07-11 2 views
-2

Wie starte ich einen Dienst mithilfe der WMI-Bibliothek? Der folgende Code führt den Ausnahme:
AttributeError: 'list' object has no attribute 'StopService'WMI-Bibliothek, Windows-Dienst remote zu starten

import wmi 
c = wmi.WMI ('servername',user='username',password='password') 
c.Win32_Service.StartService('WIn32_service') 
+0

Welche Ausnahme wird ausgelöst? Bitte fügen Sie eine vollständige Rückverfolgung zu Ihrer Frage hinzu. Ist das verwirrte Buchstabengehäuse im ''WIn32_service'-String-Argument beabsichtigt? – martineau

Antwort

1

Es ist die Dokumentation der Bibliothek auf Github zu: https://github.com/tjguk/wmi/blob/master/docs/cookbook.rst

ich den obigen Code glauben einen Fehler wirft, weil Sie nicht angeben die Service anfangen.

Angenommen, Sie wissen nicht, welche Leistungen Ihnen zur Verfügung stehen:

import wmi 

c = wmi.WMI() # Pass connection credentials if needed 

# Below will output all possible service names 
for service in c.Win32_Service(): 
    print(service.Name) 

Sobald Sie den Namen des Dienstes kennen Sie ausführen möchten:

# If you know the name of the service you can simply start it with: 
c.Win32_Service(Name='<service_name>')[0].StartService() 

# Same as above, a little differently... 
for service in c.Win32_Service(): 
    # Some condition to find the wanted service 
    if service.Name == 'service_you_want': 
     service.StartService() 

Hoffentlich mit der Dokumentation und Mit meinen Code-Schnipsel finden Sie Ihre Lösung.

+0

Danke! - Ich erhalte einen Attribut Import wmi c = wmi.WMI ('Server', user = 'user', password = 'password') c.Win32_Service (Name = 'service_name') Startservice() . Traceback (letzter Aufruf zuletzt): Python Shell, prompt 1, Zeile 4 AttributeError: 'list' -Objekt hat kein Attribut 'StartService' –

+0

Übergeben Sie 'service_name' als tatsächlichen Service-Namen? In meinem Code habe ich das nur als Beispiel benutzt ... durch die Bibliothek nutzen Sie die Microsoft Windows Query Language, dh Sie suchen nach Informationen und suchen mit 'c.Win32_Service (Name = 'service_name') nach einem Service mit dem Namen 'service_name' - was ich sehr bezweifle, ist was du beabsichtigst. Es klingt wie Sie sind nicht sicher, was der genaue Name des Dienstes, den Sie ausführen möchten, ist - beziehen Sie sich auf mein erstes Bit des Codes 'für den Dienst in c.Win32_Service()', führen Sie diesen Code, Blick auf die Ausgabe und suchen der Name, den du willst. – flevinkelming

+0

Ich habe einen tatsächlichen Servernamen, Benutzernamen, Passwort und Service-Name. Ich habe gerade den 'service_name' für den Beitrag bearbeitet –

Verwandte Themen