iT邦幫忙

0

WMI程式設計不能執行批次檔

各位前輩您們好,最近學習wmi遇到一些問題無法解決,希望各位前輩能指點~~
點兩下執行bat四行都可執行,
在cmd.exe下也可執行,
唯透過wmi遠端只能執行
第一行與第三行的新增資料夾與第四行的重開機指令
第二行卻無法執行,希望前輩能指點,謝謝。

cmd(@"""c:\update.bat""");

副程式:

public void cmd(string path)
    {
        ConnectionOptions options = new ConnectionOptions();
        options.Username = username.Text;   // 使用者名稱
        options.Password = passwd.Text;   // 使用者密碼
        options.Authentication = AuthenticationLevel.Default;    // 認證模式設定 (採用預設)
        options.Impersonation = ImpersonationLevel.Impersonate;  // 設定 COM 模擬等級
        options.EnablePrivileges = true;  
        ManagementScope MS_Conn = new ManagementScope("\\\\" + "192.168.11.1" + "\\root\\cimv2", options);
        //ManagementScope MS_Conn = new ManagementScope("\\\\" + ip.Text + "\\root\\DEFAULT", options);
        MS_Conn.Connect();

        ManagementPath MP = new ManagementPath("Win32_Process");//要先知道命令的大類
        ManagementClass processClass = new ManagementClass(MS_Conn,MP, null);
        processClass.Scope.Options.EnablePrivileges = true; 
        ManagementBaseObject mbo = processClass.GetMethodParameters("Create");//方法
        mbo["CommandLine"] = string.Format("cmd.exe /c {0}",path);//指令
        ManagementBaseObject result = processClass.InvokeMethod("Create", mbo,null);//處發
        
        if ((uint)result.Properties["ReturnValue"].Value == 0)
        {  // 如果返回0代表成功
            Response.Write("遠端操作成功!!");
        }
        else
        {
            Response.Write("遠端操作失敗!!");
        }
    }

update.bat的內容:

md c:\AAA
copy "\\192.168.11.2\data\1.txt" "c:\data\2.txt" 
md c:\BBB
shutdown -s
看更多先前的討論...收起先前的討論...
外獅佬 iT邦大師 1 級 ‧ 2012-09-03 15:20:05 檢舉
汗....這個批次檔裡頭的指令,都可以直接以WMI物件去執行...
有沒有考慮全部寫到WMI程式裡頭就好啊??
sms90301 iT邦新手 5 級 ‧ 2012-09-03 15:49:11 檢舉
我有試過用wmi的Win32_Process方法來執行dos指令,
一樣不能copy網芳的檔案,可是一樣能有執行shutdown的權力。
外獅佬 iT邦大師 1 級 ‧ 2012-09-03 17:02:28 檢舉
看起來應該是權限的問題,這兩台電腦,有加入AD嗎??
如果沒有,兩台主機是否擁有相同的帳號與密碼??
-----------------------------------------
基本上,用cmd去測試是不準的,因為執行WMI的帳號,與你執行cmd的帳號權限肯定不同
外獅佬 iT邦大師 1 級 ‧ 2012-09-03 17:04:29 檢舉
1、2、4行的執行,都是在192.168.11.1這台本機,所以,只要WMI能成功連接這台主機,
這幾行程式,基本上是沒問題的。
問題出在,WMI是否有權限可以存取192.168.11.2的share folder
外獅佬 iT邦大師 1 級 ‧ 2012-09-03 17:06:52 檢舉
測試方法也不難,把192.168.11.2那台電腦的guest帳號先啟用,
再把share folder的讀取全縣,賦予guest帳號,然後再試試。
sms90301 iT邦新手 5 級 ‧ 2012-09-03 18:28:20 檢舉
我試著把guest加進去share資料夾,用Win32_Process就可以copy了~~

但wmi的dos方法不行,可能是ted99tw前輩說的原因吧,我還要再試試。

謝謝您的指教,讓我受益良多。

1 個回答

10
ted99tw
iT邦高手 1 級 ‧ 2012-09-03 12:24:54
最佳解答

WMI功能雖強,但若remote執行,則許多怪問題會出現,例如某些需local或Domain Admin的操作,因此若能改成本地執行,例如:在遠端電腦執行EXE,再由EXE操作本地WMI,則多OK。

sms90301 iT邦新手 5 級 ‧ 2012-09-03 15:51:23 檢舉

我用類似跳版的方式pstool的PsExec工具,
本機vs執行可以抓,可是上到iis_server就不能抓\\網芳的資料了....
權限都開everyone也不行呢~~

我要發表回答

立即登入回答