Подсчитайте количество загруженных файлов с помощью PowerShell и сборки WinSCP .NET

#.net #powershell #ftp #winscp #winscp-net

#.net #powershell #ftp #winscp #winscp-net

Вопрос:

У меня есть скрипт для загрузки файлов с моего компьютера на FTP. Но я хочу подсчитать, сколько файлов загружает мой скрипт. Я использую скрипт от WinSCP.

 Add-Type -Path "WinSCPnet.dll"

$session = New-Object WinSCP.Session

try
{
    # Connect
    $session.DebugLogPath = "C:forKeppLogtransfer_data_script.log"
    $session.Open($sessionOptions)
    
    #Message
    Write-Host -ForegroundColor Cyan "`r`nUploading files to $servername..."
    Write-Host -ForegroundColor White "Do not close this window!"
    $path = "/MyuploadfilesTOFtp/"


    # Transfer files
    $session.PutFiles("C:Myfileslocation*.*", $path "/*").Check()
}
finally
{
    #Inform user
    Write-Host -ForegroundColor Cyan "Files have been uploaded to $servername."

    #Dispose of session
    $session.Dispose()
}
  

Я могу видеть, какие файлы были загружены в мой файл журнала, но он не удобен для использования. Я хочу получить некоторую переменную для подсчитанного количества файлов, которые были загружены.

Я хочу сделать что-то вроде этого

 Write-Host -ForegroundColor Cyan "Files have been uploaded to $servername. Uploaded file's number is $numberofiles."
  

Ответ №1:

Session.PutFiles Возвращает TransferOperationResult результат. У него есть Transfers свойство с коллекцией передач.

 $results = $session.PutFiles("C:Myfileslocation*.*", $path "/*")
$results.Check() # Throws if any transfer failed

$count = $results.Transfers.Count