PowerShell正在从具有最新日期的列表下载文件

PowerShell正在从具有最新日期的列表下载文件,powershell,filter,download,Powershell,Filter,Download,我不太熟悉使用PowerShell和脚本,但我已经尝试了几天来解决我的问题,即使研究stackoverflow和Web,我也找不到解决方案 我尝试编写一个脚本,从网站下载固定数量的文件(.jdb、.exe)。 文件名的一部分始终相同,例如:-061-IPS_IU_SEP_14RU1.jdb 但完整文件名是20201120-061-IPS_IU_SEP_14RU1.jdb 第一部分是创建文件的日期。 到目前为止,我能够使用以下代码下载所有文件: $filename = @( "-061-

我不太熟悉使用PowerShell和脚本,但我已经尝试了几天来解决我的问题,即使研究stackoverflow和Web,我也找不到解决方案

我尝试编写一个脚本,从网站下载固定数量的文件(.jdb、.exe)。 文件名的一部分始终相同,例如:-061-IPS_IU_SEP_14RU1.jdb 但完整文件名是20201120-061-IPS_IU_SEP_14RU1.jdb

第一部分是创建文件的日期。 到目前为止,我能够使用以下代码下载所有文件:

$filename = @(
"-061-IPS_IU_SEP_14_0.exe",
"-061-IPS_IU_SEP_14_0.jdb",
"-061-IPS_IU_SEP_14_0_MP2.exe",
"-061-IPS_IU_SEP_14_0_MP2.jdb",
"-061-IPS_IU_SEP_14RU1.exe",
"-061-IPS_IU_SEP_14RU1.jdb",
"-061-IPS_IU_SEP_14.2_RU1.exe",
"-061-IPS_IU_SEP_14.2_RU1.jdb",
"-061-IPS_IU_SEP_14.2_RU2.exe",
"-061-IPS_IU_SEP_14.2_RU2.jdb"
)
# Zielverzeichnis
$output = "C:\IPS14\" 
$url = "http://definitions.symantec.com/defs/ips/"
$Date = Get-Date -format yyyyMMdd ((Get-Date).AddDays(0))

$fullurl = ("$url"  + $Date +  $filename[0])
    
        

for ($i=0; $i -lt $filename.Length; $i++){
    $fullurl = ("$url"  + ($Date-1) +  $filename[$i])
    Try{
   
    Start-BitsTransfer -Source $fullurl -Destination $Output
    Write-Host ("$url"  + $Date +  $filename[$i] + " Downloading")
}
Catch{}
目前的问题是有些文件没有每天更新。有些是1天前的,有些是3天或3天以上的。 我只需要最新更新的文件

因为下载文件不是我的问题,所以我尝试了类似的方法

$IPSindex = 'https://definitions.symantec.com/defs/download/symantec_enterprise/ips/index.html'
(Invoke-WebRequest –Uri $IPSindex).Links   | Sort-Object href -Unique | Format-List innerText, href
列出页面上的所有文件。但是现在我需要使用
$filename
数组过滤最新的href

实际上我被卡住了。希望你能帮助我


问候

我已修改了您的代码片段,以提取文件名的日期部分并将其转换为日期时间数组。对日期时间数组进行排序以获取最近的更新

$IPSindex = 'https://definitions.symantec.com/defs/download/symantec_enterprise/ips/index.html'
$links = ((Invoke-WebRequest –Uri $IPSindex).Links).href
$dates =@()
foreach ($link in $links){
if($link -like "*IPS*"){
$dates += $link.split("/")[-1].split("-")[0]
}
}
$dates = $dates |Get-Unique | foreach {[datetime]::ParseExact($_,"yyyyMMdd",$null)} | Sort-Object -Descending

Write-Output "The latest available definition date: $($dates[0])"

你好,克洛西·帕芬,谢谢你的帮助。但是,如何将包含日期的完整链接与$filename中的文件名进行比较?确切的日期并不重要,我只需要确保下载$filename中每个文件的最新版本。