微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

powershell 从延迟链接下载文件

如何解决powershell 从延迟链接下载文件

我正在尝试从页面下载 msi 包,该页面后台进行重定向以下载我想要的文件

这是我想从以下位置下载 msi 的页面https://remotedesktopmanager.com/de/home/thankyou/rdmmsi

我尝试了几个 PowerShell 脚本,但都没有提取正确的下载 URL 或下载文件。 使用 Invoke-Webrequest -Outfile C:xxx 只保存 HTML。

解决方法

页面使用带有超时的 javascript 重定向到当前设置文件。这就是您不能使用 Invoke-WebRequest 的原因,因为它使用引擎盖下的 Internet Explorer 引擎,该引擎也执行此 javascript window.location 重定向(导致在默认浏览器中打开 url)。

要仅获取原始 HTML,您必须使用 Invoke-RestMethod

$website = Invoke-RestMethod -Uri 'https://remotedesktopmanager.com/de/home/thankyou/rdmmsi'

完整的网站现在存储在变量 $website 中,而无需解释 javascript。 要查找带有字符串 window.location 的行,我使用 Select-String 需要解析文件。因此,变量的内容首先存储在文件中,然后被解析。

$tmpFilePath = 'C:\tmp\t.txt'
Out-File -FilePath $tmpFilePath -InputObject $website
$urlRedirectLine = Select-String -Path $tmpFilePath -SimpleMatch "window.location"
Remove-Item -Path $tmpFilePath

新变量 $urlRedirectLine(其内容现在是 C:\tmp\t.txt:999: setTimeout(function () { window.location = 'https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.2021.1.25.0.msi'; },4500);)包含我们正在寻找的字符串。

要提取该网址,我将变量转换为字符串,然后使用 SubString() 提取网址本身。为此,我在该变量中查找第一个 ' 和最后一个 '

$urlString = $urlRedirectLine.ToString()
$url = $urlString.Substring($urlString.IndexOf("'")+1,$urlString.LastIndexOf("'")-$urlString.IndexOf("'")-1)

导致 $url 的网址为 https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.2021.1.25.0.msi

要下载文件,您可以再次使用 Invoke-RestMethod

Invoke-RestMethod -Uri $url -OutFile 'C:\tmp\rdm.msi'
,

您提供的链接是主下载页面,几秒钟后重定向到下载。

下载链接是"https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.2021.1.25.0.msi"

使用以下命令下载该 MSI。

$url = "https://cdn.devolutions.net/download/Setup.RemoteDesktopManager.2021.1.25.0.msi"
$dest = "C:\Setup.RemoteDesktopManager.2021.1.25.0.msi"
Start-BitsTransfer -Source $url -Destination $dest

您也可以使用上述变量使用 Invoke-WebRequest

Invoke-WebRequest -Uri $url -OutFile $dest

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?