使用批处理文件从远程计算机上的网页下载文件

问题描述:

当我它工作在远程计算机上本地运行此命令:使用批处理文件从远程计算机上的网页下载文件

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

这个工作 - 全部在一行中。我有一个循环变量,一个远程计算机(%% 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%')}")