2017-09-13 86 views
1

當我它工作在遠程計算機上本地運行此命令:使用批處理文件從遠程計算機上的網頁下載文件

powershell -Command "(New-Object Net.WebClient).DownloadFile('<WebPath>', 'C:\Users\<user>\Desktop\file.exe')" 

當我嘗試在批處理文件遠程使用PSEXEC相同的命令:

(Set downloadFileCommand = powershell -Command "(New-Object Net.WebClient).DownloadFile('%WebPath%', 'C$\Users\<user>\Desktop\file.exe')") 

PsExec.exe \\<remote_machine> -u %username% -p %password% -s -d cmd /c %downloadFileCommand% 

我得到「cmd啓動remote_machine進程ID #id_number」。

但是,什麼也沒有發生,下載沒有執行。這裏的建議: Run PowerShell scripts on remote PC

沒有爲我工作。

有什麼建議嗎?

編輯:

我設法用這個命令下載通過命令行(CMD)的文件:

PsExec.exe \\<remote_machine> -u <username> -p <password> -d powershell -Command (New-Object Net.WebClient).DownloadFile('<url address','C:\file.exe') 

但是當我嘗試這不工作批處理文件:

(Set DownloadInstaller = "powershell -Command (New-Object Net.WebClient).DownloadFile('<url address','C:\file.exe')") 

PsExec.exe \\<remote_machine> -u %username% -p %password% -h -d cmd /c %DownloadInstaller% 
+0

任何你爲什麼使用psexec而不是Invoke-Command的原因? – Persistent13

+0

只是熟悉它...我會嘗試調用命令。 – user2653179

+1

@ Persistent13有些環境會阻止RPC和/或WinRM,只能將PsExec作爲其他選項。 – TheIncorrigible1

回答

0

這個工作 - 全部在一行中。我有一個循環變量,一個遠程計算機(%% a)。我認爲當我使用PsExec時,C:\ ... \ file.exe在遠程計算機上「認爲」本地C:\,但可能並非如此。

我不得不把它全部寫在一行,因爲在DownloadFile路徑(我要下載的文件的位置)是本地的遠程計算機(這是一個循環變量):

PsExec.exe \\%%a -u %username% -p %password% -h -d cmd /c powershell.exe -Command "&{ (New-Object System.Net.WebClient).DownloadFile('%url%','\\%%a\C$\Users\<username>\Desktop\%file%')}") 
相關問題