2015-04-15 138 views
1

我試圖在Windows上使用wmi模塊遠程運行可執行文件。它建立了連接,但我認爲我的流程線不正確,因爲當我檢查服務器時,可執行文件肯定沒有運行。你們能幫我解釋一下這個語法嗎?Python:使用wmi遠程啓動可執行文件

import wmi, time 
ip = '10.12.62.186' 
username = "administrator" 
password = "CLARiiON!" 
from socket import * 
print "Establishing connection to %s" %ip 
connection = wmi.WMI(ip, user=username, password=password) 
print "Connection established" 
print "Starting IO" 
connection.Win32_Process.Create(CommandLine='cmd.exe C:\Users\Public\Desktop\Auto_IOX.exe') 
time.sleep(60) 

回答

3
import wmi, time 
ip = 'xx.xx.xx.xxx' 
username = "user" 
password = "password!" 
SW_SHOWNORMAL = 1 
from socket import * 
print "Establishing connection to %s" %ip 
c = wmi.WMI(ip, user=username, password=password) 
process_startup = c.Win32_ProcessStartup.new() 
process_startup.ShowWindow = SW_SHOWNORMAL 
process_id, result = c.Win32_Process.Create(CommandLine="C:\User\Administrator\Desktop\runIOX_auto.bat",ProcessStartupInformation=process_startup) 
if result == 0: 
    print "Process started successfully: %d" % process_id 
else: 
    raise RuntimeError, "Problem creating process: %d" % result 

我設法通過創建一個跑了我所需要的一切批處理文件來弄明白(從DDAY幫助),並把它放在桌面上,然後跑了吧。

+1

不要將批處理文件存儲在System32目錄中。在調用['Win32_Process.Create'](https://msdn.microsoft.com/en-us/library/aa389388)時,只需傳遞所需的'CurrentDirectory',或者使用文件的絕對路徑,例如'r「C :\用戶\公用\腳本\ runIOX_auto.bat「'。在批處理文件中,你可以得到文件位置爲'%〜dp0',即參數0的[d] rive和[p] ath,它總是批處理文件本身。 – eryksun

+0

@eryksun啊這是一個更好的想法,我做了這個,而不是system32目錄,謝謝! – bladexeon

4

看看Tim Golden的tutorial。您沒有使用Win32_Process.Create方法返回的信息。

process_id, result = c.Win32_Process.Create(
    CommandLine="notepad.exe", 
    ProcessStartupInformation=process_startup 
) 

因此,您可能錯過了進程ID和啓動該遠程進程的結果。

+0

這很有幫助,現在我可以看到流程運行。但我不認爲它實際上正在做它應該做的。 – bladexeon

+0

其實我只是覺得它好一點。我只需要將exe移動到notepad.exe wa所在的同一個文件夾中,然後運行它,然後按照它的設想進行操作。謝謝! – bladexeon

+0

不客氣。我想過可執行文件的位置,但沒有詳細說明。 – DDay

相關問題