I am trying to automate updating KeePass in a few computers using powershell, so I'm interested in some sort of way to automatically download the latest release from sourceforge, however I cannot make it work. I've seen a lot of references by googling but none work for me. I'm trying this at the current time:
$url=https://sourceforge.net/projects/keepass/files/latest/download
#$url=https://sourceforge.net/projects/keepass/files/KeePass 2.x/2.49/KeePass-2.49-Setup.exe
Invoke-WebRequest -Uri $url -OutFile $env:USERPROFILE'\Downloads\KeePass2-Latest.exe'
Both of these download the web's page file, not the installer itself.
According to this Sourceforge post "The regular download link will work, as long as the download function is able to follow redirects, and does not appear to be a browser source (eg., doesn't have a browser-like User-Agent String), it will simply redirect to the file itself."
However it's not working for me, I'm not specifying any UserAgent, and I've even tried to use -UserAgent $null
as a parameter, but no luck.
Is there a way to programatically download from sourceforge using command-line/Powershell?
CodePudding user response:
According to the documentation, the default user agent of Invoke-WebRequest
is similar to:
Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0
This might be interpreted as a browser user agent by https://sourceforge.net/ and therefore might not be a good candidate to be redirected immediately.
Try any custom string like StackOverflow
:
Invoke-WebRequest -UserAgent "StackOverflow" -Uri https://sourceforge.net/projects/keepass/files/latest/download -OutFile $env:USERPROFILE'\Downloads\KeePass2-Latest.exe'
This will work.