每天更改文件名的 PowerShell DownloadFile

PowerShell DownloadFile for File name Changing every day

使用以下代码从网站下载文件: https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html

File being downloaded

但是,文件名每天都在变化。例如:'mediumepo4981dat.zip' 今天和 'mediumepo4980dat.zip' 昨天。

我如何创建一个我可以每天 运行 动态运行的脚本?

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$uri = "https://download.nai.com/products/datfiles/med/mediumepo4981dat.zip"
$filename = "C:\DownloadTest\mediumepo4981dat.zip"
$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadFile($uri, $filename)

如果您需要进一步说明,请告诉我。

注意:寻找没有 Invoke-WebRequest 的解决方案,因为它在我当前的环境中不起作用。

似乎我们可以假设 列出的最后一个文件始终是最新的,无法确认这是否总是正确的,它可能会在某些时候发生变化。目前,这是您获取最后一个文件的方式:

$uri  = [uri] "https://download.nai.com/products/datfiles/med"
$wr   = Invoke-WebRequest $uri
$file = $wr.ParsedHtml.getElementsByTagName('a') |
    Select-Object -Last 1 -ExpandProperty TextContent
$toDownload = [uri]::new($uri, $file)

现在您可以将其与脚本的其余部分结合起来:

$filename = Join-Path 'C:\DownloadTest\' -ChildPath $file
$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadFile($toDownload.AbsoluteUri, $filename)

请注意,这仅适用于 Windows PowerShell。

$uri  = [uri] "https://download.nai.com/products/datfiles/med"
$wr   = Invoke-WebRequest $uri
$file = $wr.ParsedHtml.getElementsByTagName('a') |
    Select-Object -Last 1 -ExpandProperty TextContent
$toDownload = [uri]::new($uri, $file)

$uri 中缺少结尾的“/”。 应该是

  $uri  = [uri] "https://download.nai.com/products/datfiles/med/"