powershell: список каталогов ftp (справка по скрипту) - PullRequest
6 голосов
/ 14 августа 2011

Я пытаюсь сделать список просмотра каталога FTP.Пока что с просмотром все в порядке, но я не могу манипулировать данными, которые я получаю.Вот сценарий, который я использовал;

[System.Net.FtpWebRequest]$ftp = [System.Net.WebRequest]::Create("ftp://ftp.microsoft.com/ResKit/y2kfix/alpha/") 
$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory #Details

$response = $ftp.getresponse() 
$stream = $response.getresponsestream() 

$buffer = new-object System.Byte[] 1024 
$encoding = new-object System.Text.AsciiEncoding 

$outputBuffer = "" 
$foundMore = $false 

## Read all the data available from the stream, writing it to the 
## output buffer when done. 
do 
{ 
    ## Allow data to buffer for a bit 
    start-sleep -m 1000 

    ## Read what data is available 
    $foundmore = $false 
    $stream.ReadTimeout = 1000

    do 
    { 
        try 
        { 
            $read = $stream.Read($buffer, 0, 1024) 

            if($read -gt 0) 
            { 
                $foundmore = $true 
                $outputBuffer += ($encoding.GetString($buffer, 0, $read)) 
            } 
        } catch { $foundMore = $false; $read = 0 } 
    } while($read -gt 0) 
} while($foundmore)

$outputBuffer

Вот ответ, который я получаю для этого сценария;

PS C:\Users\Toshiba> C:\Apps\@PowerShell\FTPListDirectory.ps1
forfiles.exe
logtime.exe
timeserv
w32time

Оттуда, как я могу работать с данными, которые явозвращаться.информация о файле (имя, время создания, последнее обновление и т. д.) и другие данные.

Моя цель здесь - просмотреть все данные ftp в каталоге, а затем я могу загрузить все файлы в каталоге..

Есть шанс?

1 Ответ

8 голосов
/ 22 августа 2011

Сначала вы должны получить все данные

Замените метод на этот

$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails

Без подробностей вы получите только имена файлов.

Для загрузки файла Iобычно используют класс веб-клиента

$webclient = New-Object System.Net.WebClient
$webclient.credentials = New-Object System.Net.NetworkCredential("anonymous","anonymous@test.com")
$webclient.downloadfile("ftp://ftp.host.com/file.txt", "c:\temp\file.txt")

метод Downloadfile класса веб-клиента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...