У меня есть сценарий, который вызывает сборку WinSCP .NET. Сценарий загружает самые последние файлы из каталога FTP и называет их на основе их расширения файлов + .txt
(2245.xml
->xml.txt
).Мне нужно изменить сценарий WinSCP только для загрузки файлов с определенными расширениями файлов
Мне нужно создать фильтр для загрузки файлов только с именами tn*
или nc1
. Может кто-нибудь мне точку в правильном направлении:
$session = New-Object WinSCP.Session
# Connect
$session.Open($sessionOptions)
# Get list of files in the directory
$directoryInfo = $session.ListDirectory($remotePath)
# Select the most recent file
$latest = $directoryInfo.Files |
Where-Object { -Not $_.IsDirectory} |
Group-Object { [System.IO.Path]::GetExtension($_.Name) } |
ForEach-Object{
$_.Group | Sort-Object LastWriteTime -Descending | Select -First 1
}
$extension = [System.IO.Path]::GetExtension($latest.Name)
"GetExtension('{0}') returns '{1}'" -f $fileName, $extension
if ($latest -eq $Null)
{
Write-Host "No file found"
exit 1
}
# Download
$latest | ForEach-Object {
$extension = ([System.IO.Path]::GetExtension($_.Name)).Trim(".")
$session.GetFiles($session.EscapeFileMask($remotePath + $_.Name), "$localPath\$extension.txt").Check()
}
Я попытался добавить фильтр в каталоге сортировки, но это не сработало:
Where-Object { -Not $_.IsDirectory -or [System.IO.Path]::GetExtension($_.Name) -like "tn*" -or [System.IO.Path]::GetExtension($_.Name) -eq "nc1"} |
Спасибо!
Спасибо за вашу помощь Martin – Kyle