2012-01-16 92 views
3

長話短說,我的應用程序需要將文件複製到遠程目標,UNC可能無法連接到目標。但是,從目標和BACK到服務器的UNC連接始終是可能的。所以計劃是使用WMI啓動遠程命令外殼(cmd)並使用copy命令來獲取文件。但這不起作用。當距離目標的命令行手動執行下面的命令正常工作:WMI遠程進程複製文件

copy \\192.168.100.12\c$\remotefile.txt c:\localfile.txt 

但當我嘗試這個相同的命令作爲InputParameters("CommandLine")的一部分,這是行不通的,並且不產生錯誤。請注意,我可以使用WMI連接到目標,並遠程執行工作就好了,我可以開始的calc.exe等。這裏是不起作用的代碼:

Dim ConnectionOptions As New System.Management.ConnectionOptions 
    With ConnectionOptions 
     .Username = "target\Administrator" 
     .Password = "password" 
    End With 

    Dim ManagementScope As New System.Management.ManagementScope("\\192.168.100.11\root\cimv2", ConnectionOptions) 
    Try 
     ManagementScope.Connect() 
     MsgBox("connected") 
     Dim ManagementPath As New System.Management.ManagementPath("Win32_Process") 
     Dim ManagementOptions As New System.Management.ObjectGetOptions 
     Dim ManagementClass As New System.Management.ManagementClass(ManagementScope, ManagementPath, ManagementOptions) 
     Dim InputParameters As System.Management.ManagementBaseObject = ManagementClass.GetMethodParameters("Create") 
     InputParameters("CommandLine") = "cmd /c copy \\192.168.100.12\c$\remotefile.txt c:\localfile.txt" 
     Dim OutputParameters As System.Management.ManagementBaseObject = ManagementClass.InvokeMethod("Create", InputParameters, Nothing) 
     MsgBox("done") 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

任何想法,爲什麼這個ISN沒有工作?還是有人有更好的方式做我想做的事情?

回答

3

出於安全原因,大多數以編程方式連接到遠程計算機並告訴它將文件從另一臺計算機複製到自身的方法都被阻止。終於爲我工作的一件事是FTP。使用上面的代碼中,我可以做這樣的事情:

InputParameters("CommandLine") = "ftp -s:c:\ftpscript.txt" 

這將導致FTP命令行實用程序在遠程機器上運行,用c:\ ftpscript.txt擺脫命令的列表。由於沒有辦法到FTP腳本文件複製到目標(同樣不UNC連接),我可以先做:

InputParameters("CommandLine") = "cmd /c echo myFTPCommands > c:\ftpscript.txt" 

而這個工程:)

UPDATE:從來沒有想過使用XCOPY和它完美的作品:

InputParameters("CommandLine") = "cmd /c echo F | xcopy remotefile localfile" 

UPDATE:XCOPY昨天的工作,現在沒有。沒有什麼改變,所以我完全喪失瞭解釋。

4

弗蘭克你真的應該給自己信用,因爲你創建的方法可能是第一次繞過遠程文件複製的WMI限制!我做了3個星期的搜索信息/解決方法,你的是唯一的作品!如果我有我會投票支持您的解決方案的任何點......

我創建了一個基於你的方法完全工作VBS & WMI腳本:

InputParameters("CommandLine") = "cmd /c echo myFTPCommands > c:\ftpscript.txt" 

,你需要用你想要的任何腳本替換myFTPCommands進入文件c:\ ftpscript.bat(或.vbs,.ps1或任何你喜歡的文件)。如果您在單行腳本中無法放入足夠的文本,請使用>>追加相同的方法。現在,您可以使用XCOPY,PSEXEC,COPY或其他任何軟件來運行您在遠程主機的文件系統上創建的腳本。

Here's我用你的方法完全充實了VBScript。再次感謝。 :)

HTH, Lizz