如何使用PowerShell从Web存档下载最新文件?

时间:2016-02-08 10:58:15

标签: powershell windows-10

我想要一个powershell脚本从web archive下载最新的AMD64安装程序。

我有这个,其中URL是硬编码的:

$src = 'https://repo.saltstack.com/windows/Salt-Minion-2015.8.5-AMD64-Setup.exe'
$dst = $env:temp+'\Salt-Minion-2015.8.5-AMD64-Setup.exe'

# Download installer
Invoke-WebRequest $src -OutFile $dst

# Install
& $dst /S /master=salt /minion-name=$env:computername /start-service=1

# Remove installer
Remove-Item $dst

如何检索最新的安装程序并将$src设置为其网址?

我已经想出如何列出所有文件和文件夹:

Invoke-WebRequest -UseBasicParsing 'https://repo.saltstack.com/windows' | select -ExpandProperty Links | select href

输出:

...
...
...
Salt-Minion-2015.8.5-AMD64-Setup.exe
Salt-Minion-2015.8.5-AMD64-Setup.exe.md5
Salt-Minion-2015.8.5-x86-Setup.exe
Salt-Minion-2015.8.5-x86-Setup.exe.md5
archive/
dependencies/

...但是,如何在文件名中使用AMD64而不是.md5提取最后一个文件?

1 个答案:

答案 0 :(得分:0)

这对我有用:

# Find latest installer
$url = 'https://repo.saltstack.com/windows/'
$site = Invoke-WebRequest -UseBasicParsing -Uri $url
$table = $site.links | ?{ $_.tagName -eq 'A' -and $_.href.ToLower().Contains('amd64') -and $_.href.ToLower().EndsWith("exe") } | sort href -desc | select href -first 1
$filename = $table.href.ToString()

# Download installer
$src = $url + $filename
$dst = $env:temp + '\' + $filename
Invoke-WebRequest $src -OutFile $dst

# Install
& $dst /S /master=salt /minion-name=$env:computername /start-service=1