2011-06-13 48 views
0

我在基於活動目錄中的用戶列表的幾個push d語句中進行shelling。 2例如是vb.net中的Shell(pushd)行爲

java.exe -version 

dir /s 

搜索實際上似乎從他們的目錄下搜索,實際的計算機和輸出文件。但是,java.exe只輸出正在運行的計算機的實際輸出。

這甚至有可能從pushd語句運行遠程exe文件嗎?任何想法都會很棒。

這裏是現在的簡化版本的代碼。讓我知道是否有人想要更多。

Dim sCommand as String = "pushd \\***\C$ && java.exe -version 2>>C:\Testfile.txt" 
Dim sCommand2 as String = "pushd \\***\C$ && dir /s blah.blah>>C:\Testfile.txt" 

For each SelectedItem in Listbx.SelectedItems 
Dim ReplaceCommand as String = sCommand.Replace("***", SelectedItem) 
Shell("cmd.exe /c" & ReplaceCommand, True) 
Dim ReplaceCommand as String = sCommand2.Replace("***", SelectedItem) 
Shell("cmd.exe /c" & ReplaceCommand2, True, -1) 
Next 
+0

-version2作爲參數?我無法識別W:\> java -version2 無法識別的選項:-version2 無法創建Java虛擬機。 – KriZ 2011-06-13 11:35:28

+0

version2 >> C:\ blah.txt是我需要做的,以糾正以前的輸出錯誤。一分鐘,Ill提供更多詳細信息 – sealz 2011-06-13 11:46:42

+0

正確的代碼。版本2 >>需要file.txt來寫出信息。如果沒有2,運行完整命令時就沒有任何東西被寫入。 – sealz 2011-06-13 11:48:07

回答

1

對我來說,你需要在遠程計算機上找到Java可執行文件的第一個位置。您在shell上執行的命令將搜索您本地定義的路徑,而不是遠程路徑。

請考慮這一點。 enter image description here

第一執行是本地>運行的Java 1.6.0.23

然後我PUSHD到另一臺計算機。我重新執行相同的命令。 因爲我不在包含java.exe文件的遠程目錄中,它會處理我的路徑以找到它。 >返回相同的版本

然後我切換到遠程的Java容器並重新執行語句。 這次它找到遠程Java.exe並處理命令。

+0

嗯,看起來很完美。我可以測試一段時間。謝謝 – sealz 2011-06-13 11:59:33