1

WinSCP .NET アセンブリを呼び出すスクリプトがあります。このスクリプトは、FTP ディレクトリから最新のファイルをダウンロードし、ファイル拡張子 + .txt( 2245.xml-> xml.txt) に基づいて名前を付けます。

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"} | 

ありがとう!

4

1 に答える 1