Search code examples
powershellwgetinvoke-webrequest

How to download a file accepting license using powershell


I am trying to download package from the below link using powershell. https://www.tenable.com/downloads/nessus-agents i do not have direct link for these package also when i click on download it ask to agree. I was able to do it on Linux using command shown below. Kindly advise how can i do it in windows.

"wget  --no-check-certificate --post-data='accept="I accept the terms of this license"&x=""&sid=5mcia8gchg28attkc9oarah153&p=NessusAgent-7.4.2-amzn.x86_64.rpm' 'https://www.tenable.com/downloads/nessus-agents' -O NessusAgent-7.4.2-amzn.x86_64.rpm"

could not find anything tried option with invoke-webrequest

Invoke-RestMethod -Uri 'https://www.tenable.com/downloads/nessus-agents'


Solution

  • There's a GET query string parameter that indicates acceptance.

    Simply add i_agree_to_tenable_license_agreement=true to your query string parameters.

    Invoke-WebRequest -Uri 'https://www.tenable.com/downloads/api/v1/public/pages/nessus-agents/downloads/9762/download?i_agree_to_tenable_license_agreement=true' -OutFile 'NessusAgent-7.4.2-x64.msi'
    

    You can easily get the IDs of the other files from their API endpoint like so:

    (Invoke-WebRequest -Uri 'https://www.tenable.com/downloads/api/v1/public/pages/nessus-agents' | ConvertFrom-Json).downloads | Format-Table -AutoSize