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

Downloading a file from a webpage on remote computers using a batch file

当我 运行 这个命令在远程机器上本地运行时:

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 started on remote_machine with process 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%

这有效 - 全部在一行中。我有一个循环变量,一台远程计算机 (%%a)。我假设当我在远程计算机上本地使用 PsExec 时,C:\ ... \file.exe "thinks" of 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%')}")