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

时间:2017-09-13 14:33:12

标签: powershell batch-file psexec

当我在远程计算机上本地运行此命令时,它可以工作:

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%

我正在使用进程ID #id_number在remote_machine上启动&#34; cmd。&#34;

但是,没有任何反应,下载也没有执行。这里的建议: 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%

1 个答案:

答案 0 :(得分: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%')}")