Отключить загрузку кэшированного файла FTP

У меня есть сценарий PowerShell, который я вызываю из VBA, используя Excel. Сценарий использует WinSCP для загрузки некоторых файлов FTP и SFTP с именами даты и времени и сохраняет их со статическим именем файла, перезаписывая старый файл, на месте сетевого диска.

Скрипт работает при первом запуске, но после этого загружает ту же самую кешированную версию файла. Обходной путь - изменить настройки кэша в IE, чтобы проверять наличие новых версий сохраненных веб-страниц "каждый раз, когда я захожу на веб-страницу".

Макрос используется несколькими людьми и доступен с разных компьютеров. Есть ли способ обойти это, что я могу включить в свой код, либо в VBA или PS, чтобы они не забыли зайти в IE, чтобы изменить свои настройки?

Скрипт вызывается из VBA:

 Call Shell("powershell -executionpolicy bypass & ""H:\FTP\FTP.ps1""", vbHide)

Автор сценария:

try
{
    # Load WinSCP .NET assembly
    Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
    $localPath = "H:\Worksheets\FTP"
    $remotePath = "/outgoing/data/LatestData/"
    # Setup session options
    $sessionOptions = New-Object WinSCP.SessionOptions
    $sessionOptions.Protocol = [WinSCP.Protocol]::ftp
    $sessionOptions.HostName = 
    $sessionOptions.UserName = 
    $sessionOptions.Password = 

    $session = New-Object WinSCP.Session

    try
    {
        # 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} |
            Where-Object {
                [System.IO.Path]::GetExtension($_.Name) -eq ".nc1" -or
                [System.IO.Path]::GetExtension($_.Name) -eq ".ky1" -or
                [System.IO.Path]::GetExtension($_.Name) -like ".tn*" }

        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
        }

        $latest | ForEach-Object{
            $extension = ([System.IO.Path]::GetExtension($_.Name)).Trim(".")
            $session.GetFiles($session.EscapeFileMask($remotePath + $_.Name), "$localPath\$extension.txt" ).Check()
        }

        $stamp = $(Get-Date -f "yyyy-MM-dd-HHmm")
        $filename = $stamp.subString(0,$stamp.length-6)
        $session.GetFiles(
            ($remotePath + $fileName),
            ($localPath + $fileName + "." + $stamp)).Check()
    }
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }

    exit 0
}
catch [Exception]
{
    Write-Host $_.Exception.Message
    exit 1
}

0 ответов

Другие вопросы по тегам