Прогресс во время большой копии файла (Объект Копии и Прогресс Записи?)

Там какой-либо путь состоит в том, чтобы скопировать действительно большой файл (от одного сервера до другого) в PowerShell И отобразить его прогресс?

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

Какие-либо мысли?

56
задан wonea 4 April 2018 в 08:51
поделиться

2 ответа

Я не слышал о прогрессе с Copy-Item. Если вы не хотите использовать какой-либо внешний инструмент, вы можете поэкспериментировать с потоками. Размер буфера варьируется, вы можете попробовать разные значения (от 2kb до 64kb).

function Copy-File {
    param( [string]$from, [string]$to)
    $ffile = [io.file]::OpenRead($from)
    $tofile = [io.file]::OpenWrite($to)
    Write-Progress -Activity "Copying file" -status "$from -> $to" -PercentComplete 0
    try {
        [byte[]]$buff = new-object byte[] 4096
        [int]$total = [int]$count = 0
        do {
            $count = $ffile.Read($buff, 0, $buff.Length)
            $tofile.Write($buff, 0, $count)
            $total += $count
            if ($total % 1mb -eq 0) {
                Write-Progress -Activity "Copying file" -status "$from -> $to" `
                   -PercentComplete ([int]($total/$ffile.Length* 100))
            }
        } while ($count -gt 0)
    }
    finally {
        $ffile.Dispose()
        $tofile.Dispose()
        Write-Progress -Activity "Copying file" -Status "Ready" -Completed
    }
}
45
ответ дан 26 November 2019 в 17:01
поделиться

Насколько мне известно, нет. В любом случае я бы не рекомендовал использовать для этого copy-item. Я не думаю, что он был спроектирован так, чтобы быть надежным, как robocopy.exe, для поддержки повторных попыток, которые вам нужны для очень больших копий файлов по сети.

9
ответ дан 26 November 2019 в 17:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: