2012-01-19 12 views
2

可能なリモートシステム用のインストーラを作成して、何かインストールされていない場合、デスクトップ上でautorun.exeを起動しますそれらにリンクを付けることができ、開始と実行をクリックすることができます...しかし、これが完了していれば100%改善されるでしょう!)Python 2.7:wmiモジュール:リモートシステムでの対話型プロセスの作成

私が使用しているモデルはHeresです。両方のWindows 7とXPのマシンは、私はあまりにも大規模な取引とは思わないが。

import wmi 
import win32com.client 

def Copy_Program(computer=None, environment="Production"): 
    Oracle_install = r'\\server1\Install\Oracle\Oracle9i_Disk1\autorun\autorun.exe' 


    """ BELOW PROCESS SHOWS UP IN TASKMANAGER, but I NEED IT TO BE INTERACTIVE. 
    wmi = win32com.client.GetObject ("winmgmts:\\\\"+computer+"\\root\\cimv2") 
    win32_process = wmi.Get ("Win32_Process") 
    in_parameters = win32_process.Methods_ ("Create").InParameters 
    in_parameters.Properties_ ('CommandLine').Value = "notepad.exe" 
    result = win32_process.ExecMethod_ ("Create", in_parameters) 
    """ 
    SW_SHOWMINIMIZED = 1 

    c = wmi.WMI (computer) 
    startup = c.Win32_ProcessStartup.new (ShowWindow=SW_SHOWMINIMIZED) 
    pid, result = c.Win32_Process.Create (
    CommandLine=Oracle_install, 
    ProcessStartupInformation=startup 
    ) 
if __name__ == '__main__': 
    Copy_Program(computer = "D02659") 

氏ティムゴールデンドキュメントで言及したよう...別のマシンへのリモートは非常に簡単です...あなただけの

c = wmi.WMI("REMOTE_COMPUTER") 

と離れて行く...

技術的には動作しますが、何らかの理由でインタラクティブではありません...私はSW_SHOWMINIMIZEDの値を試しましたが、私が間違っていることを理解できないようです。私はドメイン管理者を持っているので、問題ではないはずです...特に、私は同時に両方のシステムにログインしているので...奇妙です。

どうぞ、よろしくお願いいたします。

答えて

0

PSEXECは残念なことにここで唯一実行可能なソリューションのように見えます...私がサードパーティのツールを呼び出すのは嫌いですが、これはうまくいきます。

import subprocess 
import getpass 

Oracle = r'\\server\z$\deploy\Install\Oracle\Oracle9i_Disk1\Oracle9i_Disk1\autorun\autorun.exe' 

def Craft_Startup(COMPUTER, COMMAND): 
    UNAME="DOMAIN\\"+getpass.getuser() 
    PASSWD = getpass.getpass() 
    subprocess.Popen("psexec -u "+ UNAME +" -p " + PASSWD + " \\\\"+COMPUTER+" -i " + COMMAND) 


if __name__ == '__main__': 
    COMPUTER = 'P04213' 
    COMMAND = Oracle 
    Craft_Startup(COMPUTER, 'cmd.exe /c start ' + COMMAND) 

あなたの応答のための

0

これは、セキュリティのため

Win32_Process WMIクラスのCreate方法の制限はWin32_Process.Create方法は リモート対話プロセスを開始するために使用することができない理由からです。

Windows 2000 Professional with SP2 and earlier, Windows NT, and Windows 98/95 

Win32_Process.Createは、リモートでインタラクティブなプロセス を作成することができます。

+0

感謝したいのであれば、ここで必要にこの質問への答えは、WMIを使用することであるように見えるsystem32フォルダにPSEXECを入れたり...パスを指定することですモジュールは1分後にタスクをスケジュールする... –

関連する問題