【问题标题】:Can Powershell be used to list the contents of a URL directory?Powershell 可以用来列出 URL 目录的内容吗?
【发布时间】:2023-03-21 02:50:01
【问题描述】:

我们在 FTP 服务器上托管了一堆 zip 文件,这些文件也可以通过 HTTP 访问。我很想做类似 (gci http://test.com/test/ *.zip ) 的事情,然后给我所有存在于网络服务器上的 zip 文件。

有没有人知道以干净的方式做这种事情的方法?

TIA

【问题讨论】:

  • 如果http://test.com/test 启用了目录索引,但没有“干净”的方法,您可以将其破解。
  • 如果它是一个 ftp 服务器,为什么不使用 ftp 协议呢?您应该能够通过 ftp 从 powershell 获取目录列表
  • 如果我能提供帮助,我不想将凭据作为脚本的一部分。
  • 似乎 FTP 确实是我能做到的唯一方法。谢谢。

标签: powershell webclient-download


【解决方案1】:

invoke-webrequest (PS V3) 很容易做到这一点

$r=iwr http://asite.com/test2/ -UseBasicParsing  
$r.Links |?{$_.href -match ".zip"} 

当然,正如 +arco444 所述,目录索引必须启用


编辑 要获取最后修改的文件,您必须解析 HTML,这是一个示例(正则表达式必须添加到您的配置中):

$col=@()
$link,$date,$size=""
$r=iwr http://asite.com/test2/ 
$r.ParsedHtml.body.getElementsByTagName('TR')|%{ 
    $_.getElementsByTagName('TD') |select -expand innerHTML |%{     
        switch -regex ($_){
            "(.)*zip"{ $link = $_;break}
            "\d{2}-...-\d{4}(.)*"{$date=$_;break}
              "^\d*[KM]"    {$size=$_;break }       
            default{}
        }

    }
        if( $link -and $date -and $size){
        $o=new-object -typename psobject |select  -property "link","date","size"
        $o.link=$link
        $o.date=$date
        $o.size=$size

        $col+=$o
        }
    } 
    $col |select -unique "link","date","size" |sort -desc date |select -last 1

【讨论】:

  • 但是如果没有带有链接的页面怎么办?只是文件?
  • 谢谢,原来它无法通过 http 访问。该死的。
  • Kayasazx - 将其暴露给 HTTP。您如何仅在示例中列出没有 url 的文件?我会给你答案。谢谢
  • 没关系,找到它:$r.Links.innerHTML |?{$_ -match ".zip" } | Select-Object -Last 1
  • 如果你想要最新的文件,你应该在选择之前使用排序对象
猜你喜欢
  • 2021-10-01
  • 2011-06-10
  • 1970-01-01
  • 2019-09-05
  • 2013-09-22
  • 2010-10-08
  • 2022-12-04
  • 2013-12-07
  • 1970-01-01
相关资源
最近更新 更多