rov*_*vda 0 powershell sourceforge invoke-webrequest
我正在尝试使用 powershell 在几台计算机中自动更新 KeePass,因此我对某种从 sourceforge 自动下载最新版本的方法感兴趣,但是我无法使其工作。我通过谷歌搜索看到了很多参考资料,但没有一个对我有用。我目前正在尝试这个:
$url=https://sourceforge.net/projects/keepass/files/latest/download
#$url=https://sourceforge.net/projects/keepass/files/KeePass%202.x/2.49/KeePass-2.49-Setup.exe
Invoke-WebRequest -Uri $url -OutFile $env:USERPROFILE'\Downloads\KeePass2-Latest.exe'
Run Code Online (Sandbox Code Playgroud)
这两者都下载网络的页面文件,而不是安装程序本身。
根据此 Sourceforge 帖子“只要下载功能能够遵循重定向,并且看起来不是浏览器源(例如,没有类似浏览器的用户代理字符串),常规下载链接就可以工作),它只会重定向到文件本身。 ”
然而它对我不起作用,我没有指定任何 UserAgent,我什至尝试将其用作-UserAgent $null参数,但没有成功。
有没有办法使用命令行/Powershell 以编程方式从 sourceforge 下载?
根据文档,默认的用户代理Invoke-WebRequest类似于:
\n\n\n
Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0
这可能会被SourceForge解释为浏览器用户代理,因此可能不适合立即重定向。
\nSourceForge 的文档指出,他们提供直接下载,wget例如使用时:
\n\n我们还有一个特殊的“最新/下载”URL,有点像 Google 的“手气不错”下载按钮:
\nRun Code Online (Sandbox Code Playgroud)\n$ wget https://sourceforge.net/projects/phppgadmin/files/latest/download\n如果您使用它,我们\xe2\x80\x99将尝试向您发送最新的下载。Wget(和类似的工具)使得确定您\xe2\x80\x99是否在Windows、Mac、Linux等上变得有点棘手。如果您\xe2\x80\x99正在下载\xe2\x80\x99s操作系统的东西-具体您\xe2\x80\x99最好使用完整的 URL。
\n
默认的用户代理wget如下所示,其中数字代表当前版本wget:
| 操作系统 | 用户代理 |
|---|---|
| 视窗 | Wget/1.21.1 |
| Linux | Wget/1.21.1 (linux-gnu) |
使用Wget用户代理就足以直接下载可执行文件:
Invoke-WebRequest -UserAgent "Wget" -Uri https://sourceforge.net/projects/keepass/files/latest/download -OutFile $env:USERPROFILE\'\\Downloads\\KeePass2-Latest.exe\'\nRun Code Online (Sandbox Code Playgroud)\n由于 KeePass 只提供 Windows 可执行文件,因此您不必担心 Linux 或 macOS 二进制文件/包。
\n| 归档时间: |
|
| 查看次数: |
2008 次 |
| 最近记录: |