2015-01-14 2 views
2

У нас есть куча zip-файлов, размещенных на FTP-сервере, которые также доступны через HTTP. Я хотел бы сделать что-то вроде (gci http://test.com/test/ * .zip) и дать мне все zip-файлы, которые существуют на веб-сервере.Можно ли использовать Powershell для отображения содержимого каталога URL?

Кто-нибудь знает, как это сделать чистым способом?

ТИА

+0

Вы можете взломать его вместе, если 'HTTP: // test.com/test' были индексы каталогов включен, но не«чистый»способ сделать это. – arco444

+0

, если это FTP-сервер, почему бы не использовать протокол ftp? вы должны иметь возможность получить список каталогов через ftp из powershell. – Paul

+0

Я не хочу иметь учетные данные как часть моего сценария, если я могу ему помочь. – mumbles

ответ

4

это довольно легко с invoke-webrequest (PS V3)

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

, конечно, как + arco444 состояний, индекс каталог должен быть включить directory listing


Редактировать Чтобы получить последний измененный файл, вам придется проанализировать HTML, вот пример (регулярное выражение будет иметь чтобы быть addapted к вашей конфигурации):

[email protected]() 
$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 
+0

Но что, если нет страницы со ссылками? Просто файлы? – mumbles

+0

да, это так –

+0

Thx, оказывается, он недоступен через http. Черт. – mumbles

Смежные вопросы