2012-01-16 17 views
3

要するに、私のアプリケーションでは、ターゲットへのUNC接続ができないリモートターゲットにファイルをコピーする必要があります。ただし、ターゲットからのUNC接続とサーバーへのBACKは常に可能です。そのため、WMIを使用してリモートコマンドシェル(cmd)を起動し、copyコマンドを使用してファイルを取得するという計画でした。しかし、これは機能しません。ターゲットのコマンドラインから手動で実行する場合は、次のコマンドが正常に動作します:ファイルをコピーするためのWMIリモートプロセス

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

しかし、私はInputParameters("CommandLine")の一環として、この同じコマンドをしようとすると、それは動作しませんし、エラーを生成しません。

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:私はここにCALC.EXEなどを開始することができますように私はターゲットとリモート実行に接続するために、WMIを使用するだけで正常に動作できることに注意してくださいすることはできませんコードです働いている?それとも誰かが私がやろうとしていることをやるより良い方法を持っていますか?

答えて

3

セキュリティ上の理由から、プログラムによってリモートマシンに接続し、別のマシンからファイルを自分自身にコピーするように指示するほとんどの方法はブロックされています。最終的に私のために働いたことの一つはFTPです。私はこのような何かを行うことができます上記のコードを使用すると:

Cを使用して、リモートマシン上で実行するためのFTPコマンドラインユーティリティを起こし
InputParameters("CommandLine") = "ftp -s:c:\ftpscript.txt" 

:\ ftpscript.txtはからのコマンドの一覧を取得します。

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

をそして、これは動作します:)

UPDATEを::(再び、無UNC接続)ターゲットにFTPスクリプト・ファイルをコピーする方法がないので、私が最初に行うことができますに思ったことはありませんXCOPYを使用して、それは完璧に動作します:

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

UPDATE:XCOPYは昨日働いていた、今ではありません。何も変わっていないので、私は説明のために完全に喪失しています。

4

フランクあなたが作成した方法は、リモートファイルコピーのWMI制限を乗り越えた可能性が高いので、私は情報/回避策を探して3週間を過ごしましたが、あなただけが働いています!私はあなたのソリューションに投票する任意のポイントを持っていた場合...

私はあなたの方法に基づいて完全に動作するVBS & WMIスクリプトを作成しました:

あなたが好きなスクリプトを使用して、必要に応じて、あなたがmyFTPCommandsを交換
InputParameters("CommandLine") = "cmd /c echo myFTPCommands > c:\ftpscript.txt" 

ファイルc:\ ftpscript.bat(または.vbs、.ps1など)に移動します。 1行のスクリプトに十分なテキストが収まらない場合は、>>を使用して同じメソッドを追加します。これで、XCOPY、PSEXEC、COPYなどを使用して、リモートホストのファイルシステムで作成したスクリプトを実行できます。

Here'sあなたのメソッドを使用して私の完全に洗練されたVBScript。再度、感謝します。 :)

HTH、 リズ