windows - powershell: ftp directory notering (hjælp til script)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at lave en liste over en ftp-mappe. Visningsdelen er ok så langt, men jeg kan ikke manipulere de data, jeg kommer tilbage. Her er det script, jeg brugte


[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


Her er svaret jeg får tilbage til dette script;


PS C:UsersToshiba> C:Apps@PowerShellFTPListDirectory.ps1
forfiles.exe
logtime.exe
timeserv
w32time


Derefter, hvordan jeg kan arbejde på de data, jeg kommer tilbage. fil info (navn, oprettelsestid, sidste opdatering osv.) og de andre ting.


Mit mål her er at se alle ftp data i en mappe og så kan jeg downloade alle filerne i en mappe.


Nogen chance?

Bedste reference


Først skal du hente alle dataene


Udskift metoden med dette


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


Uden detaljerne får du kun filnavnet.


For at downloade en fil bruger jeg normalt webclient-klassen


$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:	empfile.txt")


Downloadfile metode af webclient klassen [5]