启动 EC2 实例时,我在 AWS EC2 UserData 部分运行一些命令,并希望从 Microsoft 下载文件 https://www.microsoft.com/en-us/download/confirmation.aspx?id=40784 (它是 Visual Studio 2013 的 Visual C++ 可再发行组件包)启动时。
到目前为止我有以下命令:
powershell -Command "$cli = New-Object
System.Net.WebClient;$cli.Headers['User-Agent'] = 'Mozilla/5.0 (Windows NT
6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0
Safari/537.36';$cli.DownloadFile('https://www.microsoft.com/en-
us/download/confirmation.aspx?id=40784', 'C:\UserData\vcredist_arm.exe')"
它使用 Powershell System.Net.WebClient 方法,但看起来它正在下载 HTML 页面,而不是您首先浏览该页面时下载的可执行文件,然后浏览器会询问您要将文件保存在哪里文件。
如何使用 Powershell 下载实际的可执行文件而不是 https://www.microsoft.com/en-us/download/confirmation.aspx?id=40784 处的页面?
最佳答案
您提供的 URL 是 HTTP 页面,因此这就是您下载该页面而不是 exe 的原因。要解决此问题,您必须获得指向要下载的文件的直接链接,通常页面会为您处理此问题,但 C# Web 客户端未进行编码来执行此操作。
在这种情况下,您可以通过以下方式获取直接下载链接:
- 点击
点击此处
链接如果您的下载在 30 秒后未开始,请点击此处
- 将
单击此处
下载链接复制到您要下载的产品,在本例中为https://download.microsoft.com/download/2/E/6/2E61CFA4- 993B-4DD4-91DA-3737CD5CD6E3/vcredist_arm.exe
- 使用它代替
https://www.microsoft.com/en- us/download/confirmation.aspx?id=40784
用于 webclient 对象。
关于powershell - 如何使用 Powershell System.Net.WebClient 和自定义用户代理字符串保存 "browser-initiated download"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623314/